基本参数
default_storage_engine=InnoDB #设置mysql实例的存储为Innodb,这样设置了以后,你在创建表时 #不指定存储引擎,那么创建的表默认就是innodb存储;但还是建议 #在创建表时指定存储引擎; innodb_buffer_pool_size=1G #设置buffer pool池的大小,buffer pool里面存放的是索引和数据; #当读取数据时,会先到buffer pool池里面去找,若有则直接读取数据; #若没有,直接到磁盘上读取数据文件,然后把数据缓存在buffer pool池里面,供下次查询; #当写入数据时,会先把数据写入到buffer pool池里面,然后再写入磁盘 #它的大小必须得是等于或者是innodb_buffer_pool_instances乘以 #innodb_buffer_pool_chunk_size的倍数 #生产环境设置建议:不超过物理内存的75%; #buffer pool的组成部分 #free list #启动时有多个16k的空白页就存在free list里面的 #lur list #当读取一个页的数据时,就把free list里面的页放在lur list #flush list #当修改过的页就存放在flush list里面,这里面就有脏页 innodb_buffer_pool_instances=8 #将bufferr pool分成多少个实例,以达到提高mysql并发的性能; #在windows下默认是1个,在linux下默认也是1个(默认buffer pool大小为128M) #若在linux下mysql innodb buffer pool的大小等于1G或于大于1G,则该参数 #默认为8,生产环境设置时,建议跟你服务器的CPU核数 innodb_buffer_pool_chunk_size=128M #buffer pool池的块大小,默认也是128M,生产建议也设置成128M innodb_buffer_pool_dump_at_shutdown=1 #在停止mysql实例的时候是否把buffer pool里面的数据dummp下来 #该参数默认是开启的,你会在数据目录下看到有一个ib_buffer_pool的文件 innodb_buffer_pool_dump_pct=40 #当innodb_buffer_pool_dump_at_shutdown等于1时,dump多少数据,默认是25% innodb_buffer_pool_load_at_startup=1 #mysql启动时,是否将停服务时dump来来的数据自动加载到buffer pool池里面;
事务日志的相关参数
innodb_log_buffer_size=16M #设置事务的事务日志缓冲区的大小,默认是16M #生产中默认的16M就已经够了; innodb_flush_log_at_trx_commit=1 #控制事务日志刷新到磁盘的一个方式,默认也是1,它有三个值: #正常流程:事务提交---->log buffer---->file system---->log file #0 A:流程:事务提交-->(每秒)file system-->log file; B:每秒一次的频率将日志直接写入到log file中,不会同时触发(1秒)文件系统到磁盘的同步操作; C:速度快,不安全,减少磁盘IO,若出现故障,会丢失1秒的事务; #1 A:流程:事务提交--->log buffer--->(同时)file system---log file B:每个事务的提交都会走log buffer到log file之间的步骤,同时触发文件系统到磁盘的同步操作 C:最安全的,可以做到不会丢失任何一个事务 #2 A:流程:事务提交--->log buffer--->(每秒)file system---log file B:每个事务的提交都会走log buffer到log file之间的步骤,不会触发文件系统到磁盘的同步操作 innodb_log_file_size=4G #设置innodb每组事务日志文件的的大小,不要设置太大,但你可以设置多个嘛; #小业务256M就够了,中业务保持在2~4G就行;若没有指定路径,保存数据目录下; #文件名为ib_logfile0 innodb_log_files_in_group=2 #设置事务日志文件有多少个 #这里是设置的是2个,那么在mysql实例的数据目录下就有 #ib_logfile0和ib_logfile1这两个文件 innodb_flush_method=O_DIRECT #设置innodb数据文件及事务日志的打开/刷写方式; #该参数默认是没有值的(也就是没有设置); #fdatasync 调用fsync()去刷数据文件与事务日志到buffer #O_DSYNC innodb会使用O_SYNC方式打开和刷写redo log,使用fsync()刷写数据文件 #O_DIRECT innodb使用O_DIRECT打开数据文件,使用fsync()刷写数据文件跟redo log
表空间
innodb_doublewrite=on
#该参数默认也是开启的,双写的意思
#作用是保证数据写入的可靠性,类似于READ1模拟
#避免部份写的情况;
innodb_file_per_table=1
#这个参数是决定是否使用独立表空间,默认值为1,表示使用独立表空间;
#若将这个参数的值设置为0/off,则mysql就会使用共享表空间;
innodb_data_file_path=ibdata1:5G;ibdata2:5G;ibdata3:5G:autoextend:max:20G
#设置共享表空间的文件名,文件大小,最大大小,以及保存路径
#该参数的默认文件大小名为ibdata1,且只有一个;
#该参数的默认值为12M,保存在mysql实例的数据目录下;
innodb_autoextend_increment=64
#这个参数是针对共享表空间的,当共享表空间要满了以后,会事先申请
#磁盘空间,单位是M
innodb_change_buffering=all
#开启变更缓冲区,默认是all,这个参数可以提高mysql 30%的性能;
#all表示既可以插入、删除、清理
innodb_temp_data_file_path=ibtmp1:5G:autoextend:max:20G
#设置临时表空间的文件名,文件大小,最大大小,以及保存路径
#该参数的默认文件大小名为ibtmp1,且只有一个;
#该参数的默认值为12M,保存在mysql实例的数据目录下;