mysql 技术内幕 Innodb 存储引擎 第二版 学习 first
mysql 是单进程多线程
1、查看mysql 进程
ps -ef | grep mysqld
5098就是其进程
2、查看mysql 配置文件位置
mysql --help | grep my.cnf
3、查看mysql 数据文件位置
1、编译安装的 /usr/local/mysql/bin/ vim mysql_config
2、进入mysql 输入 命令 : show variables like 'datadir'\G
INNODB 存储引擎
mysql 5.58 之后 mysql 默认的引擎就是 innodb
innodb 文件 是 .ibd文件 、
innodb 会为每一行 生成一个6字节左右 ROWID 并以此作为主键
MYISAM 存储引擎
数据文件
MYD 数据文件
MYI 索引文件
**可以使用myisampack 编码静态算法来压缩数据(压缩之后是只读的)
使用方法
Innodb 内存
线程的主要功能就是负责刷新内存池中的数据(1、保证缓存池中的数据是最新的2、并将已修改的数据文件刷新到磁盘文件中*避免发生异常Innodb能恢复正常*)
线程分类:
Innodb引擎是多线程的的模型
1、master thread(核心线程刷新数据保证数据一致性)
2、IO thread(处理异步IO请求的回调)
linux 下不能设置 IO htread 的个数
3、purge thread(关于事务的)
主要用于回收undo页的
*****补充***********
mysql通过锁机制来实现事务的隔离性,用redo log实现事务的原子性和持久性,用undo log实现事务的一致性。undo并不是redo的逆过程,redo和undo都可以看做一种恢复过程,redo恢复事务修改的页操作,redo记录的是物理日志,记录的是页的物理修改操作,redo log基本上都是顺序写的,在数据库运行时不需要对redo log的文件进行读取操作。undo回滚行记录到某个版本,undo记录的是逻辑日志,根据每行记录进行记录,undo log是需要进行随机读取的
*********************
缓存池中 管理试用版LRU算法(在传统LRU中添入了midpoint位置:将最新读到的页不放在LRU列表首部而是放在midpoint位置 大约在LRU列表的5/8处) 默认的每页的大小为16K
可以通过 show variables like 'innoodb_old_blocks_pct'\G; 来查看
*未完待续*