本站所有文章均为原创,如对您有帮助,恳请帮忙点击任何一处广告
  • 首页
  • MySQL
  • MySQL基础教程(10)存储引擎与redo log、undo log

MySQL基础教程(10)存储引擎与redo log、undo log

发布:TangLu2020-1-4 11:39分类: MySQL 标签: mysql

一、数据库存储引擎介绍

存储引擎可以理解为是数据库自己的文件系统,不同类型的存储引擎有不同的特点。存储引擎位于表级别,也就是说可以为每张表设置不同的存储引擎进行使用。常见的存储引擎有MyISAM、InnoDB、Memory、TokuDB、CSV等。

MyISAM:数据存放在.frm、.MYD、.MYI三种类型的文件中,可以直接拷贝表文件到其他数据库中进行使用。表级锁、不支持事务、不支持热备MySQL 8.0开始已经淘汰该引擎。

CSV

MEMROY

TokuDB:压缩比可以达到25倍,对数据的插入和删除速度也很快。适用于有大量插入或者删除操作的场景,如Zabbix

InnoDB:MySQL 5.5版本以后默认的存储引擎。支持MVCC(多版本并发控制)、群集索引(聚簇索引)、事务、行级锁、热备。数据存放在.frm、.ibd两种类型的文件中,5.6开始默认会开启独立表空间,每张表都会有一个独立.ibd文件。由于InnoDB还依赖共享表空间文件ibdata1存放undo log,以及ib_logfile存放redo log,所以不能直接拷贝.ibd到其他数据库进行使用。


二、Redo log(事务重做日志)与Undo log(事务回滚日志)

1、redo log是InnoDB引擎独有的物理级别日志,它记录了某个数据页上所做的修改,可以用于数据宕机的自动恢复。当MySQL遇到一条数据需要更新的时候,InnoDB会先把记录写到redo log日志中,然后在内存中进行更新,这个时候对于客户端来说更新已经完成了,查询数据也是已经更新后的数据。随后InnoDB会在合适的时候将redo log中的记录写入到磁盘,这样可以提升数据库的效率。redo log是循环写入,当固定空间写满时也会将最开始的日志同步到磁盘中,然后实现滚动写入。由于redo log的存在,使得数据库即便发生异常重启,也可以保证之前提交的记录不会丢失,这个能力称为crash-safe。


redo log相关参数配置

innodb_log_file_size=6G  #设置redo log文件大小,文件命名格式为ib_logfile0~ib_logfileN
innodb_log_files_in_group=2  #设置redo log文件个数
innodb_log_group_home_dir=./  #设置redo log文件路径



2、Undo log记录了每次事务的反操作用于回滚,保证了事务的原子性、一致性。undo log会写入到ibdata和ibtmp文件中。


undo log相关参数配置

innodb_data_home_dir = /data/mysql/  #共享表空间文件存放路径,文件名为ibdata1
innodb_data_file_path 	= ibdata1:1024M:autoextend  #共享表空间文件大小,可以写多个文件进行拆分

三、Inndo核心参数

innodb_buffer_pool_size:预分配共享内存区,用于缓冲数据页与索引页

join_buffer_size:会话内存区域中的一种,属于优化选项

key_buffer_size:会话内存区域中的一种,属于优化选项

read_buffer_size:会话内存区域中的一种,属于优化选项

sort_buffer_size:会话内存区域中的一种,属于优化选项

innodb_log_buffer_size:负责redo log的缓冲


四、MySQL存储引擎日常管理

1、查看当前MySQL所支持与默认的存储引擎

show engines


2、修改存储引擎的办法

#在线修改全局配置
set global default_storage_engine=innodb  

#写入到配置文件中的配置
[mysqld]
default_storage_engine=innodb


3、


温馨提示如有转载或引用以上内容之必要,敬请将本文链接作为出处标注,谢谢合作!
et_highlighter51
版权所有:《Linux运维技术学习站点
文章标题:《MySQL基础教程(10)存储引擎与redo log、undo log
除非注明,文章均为 《Linux运维技术学习站点》 原创
转载请注明本文短网址:http://www.linuxe.cn/post-597.html  [生成短网址]

已有 0/17 人参与

发表评论:

欢迎分享Linux运维技术学习站点

欢迎使用手机扫描访问本站,还可以关注微信哦~