您的位置:首页 > 数据库 > MySQL

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

2017-05-11 21:59 796 查看
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;  来查看

*未完待续*
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: