mysql 技术内幕 Innodb 存储引擎 第二版 学习 first

来源:互联网 发布:淘宝网衣服货到付款 编辑:程序博客网 时间:2024/05/20 20:57


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;  来查看



*未完待续*





0 0