查看存储引擎
show engines; show variables like 'default_storage_engine'; select @@default_storage_engine;
如何指定和修改存储引擎
(1) 通过参数设置默认引擎 (2) 建表的时候进行设置 (3) alter table t1 engine=innodb; 查看表的存储引擎 show create table city;
表空间
共享表空间
一般是在初始化数据之前就设置好 innodb_data_file_path=ibdata1:512M:ibdata2:512M:autoextend
独立表空间
show variables like 'innodb_file_per_table'; select @@innodb_file_per_table;
缓冲区池查询
select @@innodb_buffer_pool_size; innodb_buffer_pool_size 一般建议最多是物理内存的 75-80% 设置:set global innodb_buffer_pool_size=268435456; 重新登陆生效 show engine innodb status;看存储引擎各项的指标 Buffer pool size 8191 Free buffers 7754 Database pages 437
innodb_flush_log_at_trx_commit (双一标准之一)
主要控制了innodb将log buffer中的数据写入日志文件并flush磁盘的时间点,取值分别为0、1、2三个。默认1表示 在每次事务提交时都立即刷新redo log到文件系统缓存,并立即刷写文件系统缓存到文件磁盘。 查询: select @@innodb_flush_log_at_trx_commit; 1,每次事物的提交都会引起日志文件写入、flush磁盘的操作,确保了事务的ACID;flush到操作系统的文件系统缓存fsync 到物理磁盘. 0,表示当事务提交时,不做日志写入操作,而是每秒钟将log buffer中的数据写入文件系统缓存并且秒fsync磁盘一次; 2,每次事务提交引起写入文件系统缓存,但每秒钟完成一次fsync磁盘操作。 The default setting of 1 is required for full ACID compliance. Logs are written and flushed to disk at each transaction commit. With a setting of 0, logs are written and flushed to disk once per second. Transactions for which logs have not been flushed can be lost in a crash. With a setting of 2, logs are written after each transaction commit and flushed to disk once per second. Transactions for which logs have not been flushed can be lost in a crash.
Innodb_flush_method=(O_DIRECT, O_DSYNC,fsync)
https://dev.mysql.com/doc/refman/5.7/en/innodb-parameters.html#sysvar_innodb_flush_method 作用: 控制的是,log buffer 和data buffer,刷写磁盘的时候是否经过文件系统缓存 查看: show variables like '%innodb_flush%'; 参数值说明: O_DIRECT :数据缓冲区写磁盘,不走OS buffer fsync :日志和数据缓冲区写磁盘,都走OS buffer O_DSYNC :日志缓冲区写磁盘,不走 OS buffer 使用建议: 最高安全模式 innodb_flush_log_at_trx_commit=1 Innodb_flush_method=O_DIRECT 最高性能: innodb_flush_log_at_trx_commit=0 Innodb_flush_method=fsync
redo日志有关的参数
innodb_log_buffer_size=16777216 innodb_log_file_size=50331648 innodb_log_files_in_group = 3 show status like '%Com%';