数据库内容纵览
副标题:姜承尧《MySQL技术内幕 InnoDB存储引擎》读书笔记 1
MySQL被设计为 一个单进程多线程架构的数据库,故MySQL数据库实例在系统上的表现就是一个进程
1
2
3
4
5[root@VM_0_2_centos bin]# mysql --help | grep my.cnf
order of preference, my.cnf, $MYSQL_TCP_PORT,
/etc/my.cnf /etc/mysql/my.cnf /usr/etc/my.cnf ~/.my.cnf- 可以看出,MySQL数据库实例启动时,是按照
/etc/my.cnf
->/etc/mysql/my.cnf
->/usr/etc/my.cnf
->~/.my.cnf
的顺序读取配置文件。 - 配置文件有一个参数
datadir
指定了数据库所在的路径,如datadir=/var/lib/mysql
- 可以看出,MySQL数据库实例启动时,是按照
数据库是由一个个文件(二进制)组成的,要对这些文件执行SELECT、INSERT等操作,不能通过操作文件更改数据库的内容,需要通过数据库实例来完成
MySQL组成部分:
- 连接池组件
- 管理服务和工具组件
- SQL接口组件
- 查询分析器组件
- 优化器组件
- 缓冲组件
- 插件式存储引擎(important)
- 物理文件
InnoDB存储引擎支持事务,通过使用多版本并发控制(MVCC)来获得高并发性,并实现SQL标准的4种隔离级别。同时使用next-key locking的策略(也就是间隙锁)来避免幻读(phantom)现象的产生。此外,提供了插入缓存 、二次写、自适应哈希索引、预读等高性能和高可用的功能(其他引擎略过)