> 数据库 > MySQL >

MySQL数据库参数

数据库参数

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,这个值要注意,如果有特殊业务确实要耗时较长时,不能配置太短。

(责任编辑:IT)