- innodb_change_buffer_max_size:设置change buffer的大小,这个参数设置为50的时候,表示change buffer的大小最多只能占用buffer pool的50%。
- innodb_stats_persistent:索引统计结果的存储方式,设置为on表示统计信息会持久化;设置为off表示只存储在内存中。
- innodb_file_per_table :控制表数据存到共享表空间,还是单独的文件 OFF 存在系统空间,也就是跟数据字典放在一起; ON 每个InnoDB表数据存储在一个以.ibd为后缀的文件中; 从MySQL 5.6.6开始,改参数的默认值是ON了。
- sort_buffer_size:MySQL为排序开辟的内存(sort_buffer)的大小,如果要排序的数据量小于sort_buffer_size,排序就在内存中完成,否则需要借助磁盘临时文件辅助排序。
- max_length_for_sort_data:MySQL中专门控制用于排序的行数据的长度的一个参数,意思是如果单行的长度(单行长度是用于排序的所有字段的定义长度的总和)超过这个值,MySQL就会认为单行过大,要换一个算法。
- tmp_table_size:配置内存临时表的大小,默认是16M。如果临时表的大小超过了tmp_table_size,那么内存临时表就会转成磁盘临时表。 磁盘临时表的默认引擎是InnoDB,是由参数internal_tmp_disk_storage_engine控制的。
- innodb_lock_wait_timeout:锁等待时间设置,默认是50s。
- innodb_deadlock_detect:主动死锁检测,MySQL默认是on,默认是开启的。
- binlog_cache_size:用于控制单个线程内binlog cache所占内存的大小。如果超过了这个参数规定的大小,就要暂存到磁盘。事务提交的时候,执行器把binlog cache里的完整事务写入到binlog中,并清空binlog cache。
- sync_binlog:binlog cache的write(将日志写入到文件系统的page cache,并没有把数据持久化到磁盘)和fsync(将数据持久化到磁盘,占磁盘的IOPS)时机是由参数sync_binlog控制的: 1.sync_binlog=0的时候,表示每次提交事务都只write,不fsync; 2.sync_binlog=1的时候,表示每次提交事务都会执行fsync;3.sync_binlog=N(N>1)的时候,表示每次提交事务都write,但累积N个事务后才fsync。一般不建议将这个参数设成0,比较常见的是将其设置为100~1000中的某个值。
- innodb_flush_log_at_trx_commit:有三种可能取值:1.设置为0的时候,表示每次事务提交时都只是把redo log留在redo log buffer中;2.设置为1的时候,表示每次提交时都将redo log直接持久化到磁盘;3.设置为2的时候,表示每次事务提交时都只是把redo log写到page cache。
- binlog_group_commit_sync_delay、binlog_group_commit_sync_no_delay_count:如果想提升binlog组提交的效果,可以通过设置这两个参数来实现:binlog_group_commit_sync_delay参数,表示延迟多少微妙后才调用fsync;binlog_group_commit_sync_no_delay_count参数,表示累积多少次以后才调用fsync。 这两个条件是或的关系,也就是说只要有一个满足条件就会调用fsync,所以当binlog_group_commit_sync_delay设置为0的时候,binlog_group_commit_sync_no_delay_count也无效了。
- max_connections:用来控制一个MySQL实例同时存在的连接数的上限,超过这个值,系统就会拒绝接下来的连接请求,并报错提示“Too many connections”。
查看MySQL慢查询日志是否开启:
SHOW VARIABLES LIKE 'slow_query%';
ON表示开启,OFF表示关闭;slow_query_log_file表示慢查询日志保存文件。
慢查询日志开启方式:SET GLOBAL slow_query_log=1;
慢查询日志关闭方式:SET GLOBAL slow_query_log=0;
查看慢查询日志阀值(执行超过多场时间会记录日志):SHOW VARIABLES LIKE '%long_query_time%';
慢查询日志阀值设置方式:SET long_query_time=3; /*表示执行时间超过3秒会记录日志*/
查询当前正在进行的事务:SELECT * FROM information_schema.innodb_trx;
mysql开启事务命令:start transaction with consistent snapshot;
执行完该命令,事务会立刻启动,如果通过start transaction启动事务的话,只有第一次执行语句的时候事务才会启动。