一直使用mysql,但是始终没有深入,拜读《Mysql技术内幕InnoDB存储引擎》中,写些笔录,与君共勉。
数据库和数据库实例
- 数据库
物理操作系统文件或其他形式文件类型的集合。就是依照某种数据库模型组织起来已二进制文件形式存放的集合。 - 数据库实例
Mysql数据库由后台线程及共享内存组成。共享内存可以被运行的后台线程所共享。数据库实例是真正操作数据库的。
Mysql被设计为一个单进程多线程架构的数据库。和SQL Server比较类似,但是和Oracle多线程架构不同(Oracle的windows版本也是单进程多线程架构)。Mysql数据库实例在系统上的表现就是一个进程。
Mysql启动配置加载顺序
- 查询方法
mysql --help | grep my.cnf
order of preference, my.cnf, $MYSQL_TCP_PORT,
/etc/my.cnf /etc/mysql/my.cnf /usr/local/etc/my.cnf ~/.my.cnf
- 读取顺序
/etc/my.cnf -> /etc/mysql/my.cnf -> /usr/local/etc/my.cnf ->~/.my.cnf
如果多个配置中存在相同参数的配置则按最后配置文件中的值为准。 - 配置数据库所在路径
在配置文件中有个参数datadir。可以通过mysql交互界面查询。
mysql> show variables like 'datadir'\G;
*************************** 1. row ***************************
Variable_name: datadir
Value: /usr/local/var/mysql/
Linux默认值为/usr/local/mysql/data/,这个目录其实是个链接,链接目录为/opt/mysql_data目录,必须保证目录的用户和组,使得只有mysql用户和组可以访问。
体系结构
mysql体系结构.png如图,为官方体系结构图,由图可知体系结构包括几部分:
- 连接池组件
- 管理服务和工具组件
- sql接口组件
- 查询分析器组件
- 优化器组件
- 缓存组件
- 插件式存储引擎
- 物理文件
Mysql和其他数据库最大区别在于插件式引擎。Mysql提供了一系列的管理和服务,这些和引擎本事无关,其他数据库也同样包括这些。而存储引擎是底层物理结构的实现,每个存储引擎按照自己的意愿进行开发。
存储引擎是基于表的,而不是数据库,同一个库中每个表可以是任意存储引擎。
网友评论