MySQL配置信息,innodb 相关选项
如果你的MySQL服务包含InnoDB支持但是并不打算使用的话,
使用此选项会节省内存以及磁盘空间,并且加速某些部分
skip-innodb
这对Innodb表来说非常重要,Innodb把所有的数据和索引都缓存起来,此参数设置越大,数据存取时所需要的磁盘I/O越少。
Innodb比MyISAM表对缓冲更为敏感。MyISAM可以在默认的 key_buffer_size 设置下运行的可以,然而Innodb在默认的 innodb_buffer_pool_size 设置下却跟蜗牛似的。
注意:
1. 当然如果你的数据量不大,并且不会暴增,也无需把 innodb_buffer_pool_size 设置的太大
2. 如果在一个独立使用的数据库服务器上,你可以设置这个变量到服务器物理内存大小的80%
3. 注意在32位系统上你每个进程可能被限制在 2-3.5G,
属重点优化参数
innodb_buffer_pool_size = 2048M
InnoDB 将数据保存在一个或者多个数据文件中成为表空间
如果你只有单个逻辑驱动保存你的数据,一个单个的自增文件就足够好了
其他情况下.每个设备一个文件一般都是个好的选择
你也可以配置InnoDB来使用裸盘分区
innodb_data_file_path = ibdata1:1024M:autoextend
文件IO的线程数,一般为 4
此值在Unix下被硬编码为4,但是在Windows下可以设置得较大.
innodb_file_io_threads = 4
允许线程数量。
服务器有几个CPU就设置为几,建议用默认设置。
过高的值可能导致线程的互斥。
innodb_thread_concurrency = 16
如果设置为1 ,InnoDB会在每次事务提交后将事务日志写到磁盘上,
基于性能考虑,可以设置为0或2,但要承担在发生故障时丢失数据的风险。
0代表日志只大约每秒写入日志文件并且日志文件刷新到磁盘.
2代表每次提交后日志写入日志文件,但是日志文件每秒刷新到磁盘上。
几点说明:
1. 如果是游戏服务器,建议此值设置为2;如果是对数据安全要求极高的应用,建议设置为1;
2. 设置为0性能最高,但如果发生故障,数据可能会有丢失的危险!
3. 默认值1每一次事务提交都需要把日志写到硬盘,这是很费时的。
4. 特别是使用电池供电缓存(Battery backed up cache)时。设成2对于很多运用,特别是从MyISAM表转过来的是可以的,
5. 它的意思是不写入硬盘而是写入系统缓存。日志仍然会每秒flush到硬盘,所以你一般不会丢失超过1-2秒的更新。
6. 设成0会更快一点,但安全方面比较差,即使MySQL挂了也可能会丢失事务的数据。而值2只会在整个操作系统挂了时才可能丢数据
属重点优化参数
innodb_flush_log_at_trx_commit = 2
此参数用于写日志文件所用的内存大小,以M为单位。缓冲区更大能提高性能,但意外的故障将会丢失数据。
当缓存大小达到设定值后, InnoDB会将这些数据写到到磁盘上。
由于基本上每秒都会刷新一次,所以没有必要将此值设置的太大,MySQL开发人员建议设置为1-8M之间
innodb_log_buffer_size = 16M
此参数用于确定日志文件的大小
为避免在日志文件覆写上不必要的缓冲池刷新
一般设置为日志文件总合大小到你缓冲池大小的25%~100%
但这同时也会增加恢复故障数据库所需的时间
innodb_log_file_size = 1024M
日志组中的文件总数. 为提高性能,MySQL会以循环方式将日志写到多个文件中
通常来说2~3是比较好的.
innodb_log_files_in_group = 3
InnoDB的日志文件所在位置. 默认是MySQL的datadir.
你可以将其指定到一个独立的硬盘上或者一个RAID1卷上来提高其性能
innodb_log_group_home_dir
在InnoDB缓冲池中最大允许的脏页面的比例.
如果达到限额, InnoDB会开始刷新他们防止他们妨碍到干净数据页面.
这是一个软限制,不被保证绝对执行.
innodb_max_dirty_pages_pct = 90
InnoDB用来刷新日志的方法.
表空间总是使用双重写入刷新方法
默认值是 “fdatasync”, 另一个是 “O_DSYNC”.
innodb_flush_method=O_DSYNC
在被回滚前,一个InnoDB的事务应该等待一个锁被批准多久.
InnoDB在其拥有的锁表中自动检测事务死锁并且回滚事务.
如果你使用 LOCK TABLES 指令, 或者在同样事务中使用除了InnoDB以外的其他事务安全的存储引擎
那么一个死锁可能发生而InnoDB无法注意到.
这种情况下这个timeout值对于解决这种问题就非常有帮助.
innodb_lock_wait_timeout = 30
[mysqldump]
不要在将内存中的整个结果写入磁盘之前缓存. 在导出非常巨大的表时需要此项
quick
max_allowed_packet = 64M
[mysql]
no-auto-rehash
指定一个请求的最大连接时间,对于4GB左右的内存服务器来说,可以将其设置为5-10。
wait_timeout = 10
开启该选可以彻底关闭MySQL的TCP/IP连接方式,如果WEB服务器是以远程连接的方式访问MYSQL数据库服务器的,则不要开启该选项,否则将无法正常连接。
skip_networking
将没有使用索引的查询也记录下来
log-queries-not-using-indexes
最后更新于 2023-11-07 11:06:23 并被添加「」标签,已有 398 位童鞋阅读过。
本站使用「署名 4.0 国际」创作共享协议,可自由转载、引用,但需署名作者且注明文章出处
此处评论已关闭