首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

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]

# 不要在将内存中的整个结果写入磁盘之前缓存. 在导出非常巨大的表时需要此项

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

  • 发表于:
  • 原文链接https://page.om.qq.com/page/ON8gdAq7d9QkQXfOLG_F3EwA0
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券