
InnoDB存储引擎核心特性
1.InnoDB存储引擎核心特性
1. 存储引擎
1.1 查看
show engines; show variables like 'default_storage_engine'; select @@default_storage_engine;1.2 如何指定和修改存储引擎
(1) 通过参数设置默认引擎
(2) 建表的时候进行设置
(3) alter table t1 engine=innodb;2. 表空间
2.1 共享表空间
innodb_data_file_path一般是在初始化数据之前就设置好
例子:innodb_data_file_path=ibdata1:512M:ibdata2:512M:autoextend2.2 独立表空间
show variables like 'innodb_file_per_table';
2.缓冲区池
1.查询
select @@innodb_buffer_pool_size; show engine innodb status\G innodb_buffer_pool_size一般建议最多是物理内存的 75-80%
innodb_flush_log_at_trx_commit(双一标准之一)2.作用:
主要控制了innodb将log buffer中的数据写入日志文件并flush磁盘的时间点,取值分别为0、1、2三个。
3.查询:
select @@innodb_flush_log_at_trx_commit;4.参数说明:
1.每次事物的提交都会引起日志文件写入、flush磁盘的操作,确保了事务的ACID;flush到操作系统的文件系统缓存fsync到物理磁盘0.表示当事务提交时,不做日志写入操作,而是每秒钟将log buffer中的数据写入日志文件并flush磁盘一次;2.每次事务提交引起写入日志文件的动作,但每秒钟完成一次flush磁盘操作。
Innodb_flush_method=(O_DIRECT, fdatasync)1.作用
控制的是,
log buffer和data buffer,刷写磁盘的时候是否经过文件系统缓存2.查看
show variables like '%innodb_flush%';3.参数值说明
O_DIRECT :数据缓冲区写磁盘,不走OS buffer fdatasync :日志和数据缓冲区写磁盘,都走OS buffer O_DSYNC :日志缓冲区写磁盘,不走 OS buffer4.使用建议
1.最高安全模式innodb_flush_log_at_trx_commit=1 Innodb_flush_method=O_DIRECT5.最高性能:
innodb_flush_log_at_trx_commit=0 Innodb_flush_method=fdatasync
3.redo日志有关的参数
innodb_log_buffer_size=16777216 innodb_log_file_size=50331648 innodb_log_files_in_group = 3