【有书共读】《MySQL技术内幕》读书笔记01

第一章 mysql体系结构和存储引擎

1.1 数据库和实例的区别

数据库:物理操作系统或其他形式文件类型的集合,是存于内存中的文件。在mysql下数据库文件可以是frmmydmyiibd结尾的文件。

实例:操作这些文件的程序,由数据库后台进程/线程以及一个共享内存区组成。

MySQL数据库是单进程多线程的程序,与sql server比较类似。也就是说,MySQL数据库实例在操作系统上的表现就是一个进程。

MySQL实例启动时会读取配置文件,根据配置文件的参数来启动数据库实例,可以没有配置文件。Linux操作系统中配置文件一般放在/etc/my.cnf下。按照一个顺序读取配置文件。参数以最后读到的一个文件中的参数为准。Datadir参数制定了数据库所在的路径,Linux下默认路径为/usr/local/mysql/data,指向/opt/mysql_data目录。

1.2 MySQL的体系结构

数据库是文件的集合,实例是位于用户与操作系统中间的一层数据管理软件。

MySQL由几部分构成:

连接池组件;管理服务和工具组件;SQL接口组件;查询分析器组件;优化器组件;缓冲组件;插件式存储引擎;物理文件。

MySQL区别与其他数据库最重要的一个特点就是其插件式的表存储引擎,提供了一系列标准的管理和服务支持。存储引擎是基于表的,而不是数据库。

1.3 MySQL存储引擎

由于MySQL数据库的开源特性,用户可以根据给定的存储引擎接口编写自己的存储引擎。

存储引擎可以分为MySQL官方存储引擎和第三方存储引擎。如innoDB就是第三方存储引擎。

1.3.1 InnoDB存储引擎

支持事务,特点是行锁设计,支持外键,并支持非锁定读。

将数据放在一个逻辑的表空间中,像黑盒一样,每个表放在一个独立的ibd文件中

MVCC高并发,聚集式存储,按主键顺序存放。

1.3.2 MyISAM存储引擎

不支持事务、表锁设计,支持全文索引,主要面向一些OLAP数据库应用。

缓存池只缓存索引文件,不缓存数据文件。

1.3.3 NDB存储引擎,特点是数据放在内存中,mysql-5.1版本开始可以将非索引数据放到磁盘上。NDB之前的缺陷是join查询是mysql数据库层完成的,而不是存储引擎完成的,复杂的join查询需要巨大的网络开销,速度很慢。当前mysql cluster7.2版本中已经解决此问题,join查询效率提高了70倍。

1.3.4memeory存储引擎,将数据放到内存中,默认使用hash索引,不支持textblob类型,varchara是按照char的方式来存储的。mysql数据库使用memory存储引擎作为临时表还存储中间结果集(intermediate result),如果中间集结果大于memorg表的容量设置,又或者中间结果集包含textblog列类型字段,则mysql会把他们转换到myisam存储引擎表而放到磁盘上,会对查询产生性能影响。

1.3.5archive存储引擎,压缩能力较强,主要用于归档存储。

1.3.6federated存储引擎,不存储数据,他指向一台远程mysql数据库上的表。

1.3.7maria存储引擎,myisam的后续版本,支持缓存数据和索引,行锁设计,支持mvcc,支持事务和非事务安全的选项,以及更好的BLOG字符类型的处理性能。

1.3.8、其他存储引擎,sphinx用于全文索引,infobright用于数据仓库。

1.5 连接MySQL

本质:连接进程与数据库实例的通信,进程通信

1.5.1 TCP/IP:发起连接请求,建立连接

1.5.2 命名管道和共享内存

需要进程通信的进程在同一台服务器上。

1.5.3 UNIX域套接字

客户端和数据库实例在一台服务器上。

#读书笔记##MySQL##笔记#
全部评论

相关推荐

威猛的小饼干正在背八股:挂到根本不想整理
点赞 评论 收藏
分享
今天 18:54
门头沟学院 Java
点赞 评论 收藏
分享
1 收藏 评论
分享
牛客网
牛客企业服务