数据库参数
MYSQL数据库的参数配置一般在my.ini配置文件中修改/添加(部分参数也可以用set global 参数名=值 做临时调整,重启后失效),配置完后需要重启数据库才生效。
参数1:innodb_buffer_pool_size = Gb/MB
说明:此参数类似于oracle的SGA配置,当主机做为mysql数据库服务器时,一般配置为整机内存的60%~80%。
参数2:innodb_buffer_pool_instances=N
说明:内存缓冲池实例数,将innodb_buffer_pool_size配置的内存分割成N份,此参数当配置内存大小于1G时才生效,当数据库有多个会话进行数据库操作时,用于并行在 多个内存块中处理任务,一般配置值《=服务器CPU的个数。
参数3:max_connections = 2000 说明:最大连接数,当数据库面对高并发时,这个值需要调节为一个合理的值,才满足业务的并发要求,避免数据库拒绝连接。
参数4:max_user_connections=1000 说明:设置单个用户的连接数。
参数5:innodb_log_buffer_size =32M
说明:日志缓冲区大小,一般不用设置太大,能存下1秒钟操作的数据日志就行了,mysql默认1秒写一轮询写一次日志到磁盘。
参数6:innodb_flush_log_at_trx_commit
说明:(这个配置很关键)一般的实时业务交易配置为2,取值0,1,2
0:log buffer将每秒一次地写入log file中,并且log file的flush(刷到磁盘)操作同时进行。该模式下在事务提交的时候,不会主动触发写入磁盘的操作。
1:每次事务提交时MySQL都会把log buffer的数据写入log file,并且flush(刷到磁盘)中去,该模式为系统默认。
2:每次事务提交时MySQL都会把log buffer的数据写入log file,但是flush(刷到磁盘)操作并不会同时进行。该模式下,MySQL会每秒执行一次 flush(刷到磁盘)操作。
0与2的区别:
0:当mysql挂了之后,可能会损失前一秒的事务信息
2:当mysql挂了之后,如果系统文件系统没挂,不会有事务丢失。
参数7:innodb_read_io_threads = 16 说明:数据库读操作时的线程数,用于并发。
参数8:innodb_write_io_threads = 16 说明:数据库写操作时的线程数,用于并发。
参数9:innodb file per table= 1
说明:每一个表是否使用独立的数据表空间,默认为OFF(使用共享表空间),一般建议配置为1,
InnoDB 默认会将所有的数据库InnoDB引擎的表数据存储在一个共享空间中:(ibdata1),这样就感觉不爽,增删数据库的时候,ibdata1文件不会自动收缩,
单个数据库的备份也将成为问题。通常只能将数据使用mysqldump 导出,然后再导入解决这个问题。 共享表空间在Insert操作上少有优势。
其它都没独立表空间表现好,如果数据库基本上都插入操作则配置为0。
参数10:innodb_stats_on_metadata={ OFF|on}
说明:是否动态收集统计信息,开启时会影响数据库的性能(一般关闭,找个时间手动刷新,或定时刷新)如果为关闭时,需要配置数据库调度任务,定时刷新数据库的统计信息。
参数11:innodb_spin_wait_delay=10 说明:控制CPU的轮询时间间隔,默认是6,配置过低时,任务调度比较频繁,会消耗CPU资源。
参数12:innodb_lock_wait_timeout=30 说明:控制锁的超时时间,默认为50,这个值要注意,如果有特殊业务确实要耗时较长时,不能配置太短。