InnoDB参数详解

news/2024/7/20 15:12:53 标签: 运维, 数据库, 内存管理

1.查询5.5版本的InnoDB参数并注释:
[root@localhost etc]# grep -i innodb my.cnf;

t_innodb; otherwise, slaves may diverge from the master.

Uncomment the following if you are using InnoDB tables#如果要使用InnoDB下面的都是需要配置的.

innodb_data_home_dir = /usr/local/mysql/data #InnoDB表的目录共用设置。如果没有在 my.cnf 进行设置,InnoDB 将使用MySQL的 datadir 目录为缺省目录

innodb_data_file_path = ibdata1:10M:autoextend #单独指定数据文件的路径与大小。

innodb_log_group_home_dir = /usr/local/mysql/data #InnoDB 日志文件的路径。

innodb_buffer_pool_size = 16M #InnoDB 用来高速缓冲数据和索引内存缓冲大小。 更大的设置可以使访问数据时减少磁盘 I/O。在一个专用的数据库服务器上可以将它设置为物理内存的 80 %。 不要将它设置太大,因为物理内存的使用竞争可能会影响操作系统的页面调用。

innodb_additional_mem_pool_size = 2M #InnoDB 用来存储数据字典(data dictionary)信息和其它内部数据结构(internal data structures)的存储器组合(memory pool)大小。理想的值为 2M,在 MySQL 5.7.4 中移除。

innodb_log_file_size = 5M #日志组中的每个日志文件的大小(单位 MB)。

innodb_log_buffer_size = 8M #InnoDB 将日志写入日志磁盘文件前的缓冲大小。理想值为 1M 至 8M。

innodb_flush_log_at_trx_commit = 1 #通常设置为 1,意味着在事务提交前日志已被写入磁盘, 事务可以运行更长以及服务崩溃后的修复能力。如果你愿意减弱这个安全,或你运行的是比较小的事务处理,可以将它设置为 0 ,以减少写日志文件的磁盘 I/O。这个选项默认设置为 0。

innodb_lock_wait_timeout = 50 #在回滚(rooled back)之前,InnoDB 事务将等待超时的时间(单位 秒)。

2. 一些参数的变更与解释.

lower_case_table_names=1 # 1:表名全部转化小写保存在磁盘,名称比较大小写不敏感。其他值:0:create table语句是的语句保存表名,大小写敏感。2:原值保存,大小写不敏感。

Try number of CPU's*2 for thread_concurrency  cpu#的线程总数。5.7 中,该参数被废弃。之前版本,该参数有效,并通过show variables like '%thread%'; 查看。

thread_concurrency = 8

innodb_additional_mem_pool_size 和 innodb_use_sys_malloc 在 MySQL 5.7.4 中移除。innodb_additional_mem_pool_size ##存储数据字典等,如果没有,从系统中获得bin记录到err.log日志。后因linux系统内存管理成熟,mysql放弃自己管理这部分内存分配。URL:http://mysql.taobao.org/monthly/2016/04/01/

explicit_defaults_for_timestamp=true##为timestap字段明确指定默认值。(true:显示指定not null属性,但新增的时候该值为空,则报错)

http://www.jb51.net/article/71052.htm 如果已运行的数据库添加该字段可能报sql错误。新数据库建议增加该参数,完善数据逻辑。

skip-name-resolve ##*跳过域名解析 ,作用解析ip到主机名(http://www.45fan.com/a/question/21253.html)

添加后:

[Warning] IP address

'192.168.1.17' could not be resolved: Name or service not known 避免上面的警告,提高连接性能

。推荐添加。

log_timestamps=SYSTEM#http://www.ttlsa.com/mysql/mysql-5-7-kengdieparam-log_timestamps/  日志的时区设置,如错误日志日期时区错误,推荐添加修复

3.MySQL的InnoDB参数详细解读

mysql的InnoDB参数详解

innodb_data_home_dir

这是InnoDB表的目录共用设置如果没有在 my.cnf 进行设置,InnoDB 将使用MySQL的 datadir 目录为缺省目录。如果设定一个空字串,可以在 innodb_data_file_path 中设定绝对路径。

innodb_data_file_path

单独指定数据文件的路径与大小。数据文件的完整路径由 innodb_data_home_dir 与这里所设定值的组合。 文件大小以 MB 单位指定。因此在文件大小指定后必有“M”。 InnoDB 也支持缩写“G”, 1G = 1024M。从 3.23.44 开始,在那些支持大文件的操作系统上可以设置数据文件大小大于 4 GB。而在另一些操作系统上数据文件必须小于 2 GB。数据文件大小总和至少要达到 10 MB。在 MySQL-3.23 中这个参数必须在 my.cnf 中明确指定。在 MySQL-4.0.2 以及更新版本中则不需如此,系统会默认在 MySQL 的 datadir 目录下创建一个 16 MB 自扩充(auto-extending)的数据文件 ibdata1。你同样可以使用一个 原生磁盘分区(RAW raw disk partitions(raw devices)) 作为数据文件, 如何在 my.cnf 中详细指定它们请查看第 12.1 节。

innodb_mirrored_log_groups

为了保护数据而设置的日志文件组的拷贝数目,默认设置为 1。在 my.cnf 中以数字格式设置。

innodb_log_group_home_dir

InnoDB 日志文件的路径。必须与 innodb_log_arch_dir 设置相同值。 如果没有明确指定将默认在 MySQL 的 datadir 目录下建立两个 5 MB 大小的 ib_logfile... 文件。

innodb_log_files_in_group

日志组中的日志文件数目InnoDB 以环型方式(circular fashion)写入文件。数值 3 被推荐使用。在 my.cnf 中以数字格式设置

innodb_log_file_size

日志组中的每个日志文件的大小(单位 MB)。如果 n 是日志组中日志文件的数目,那么理想的数值为 1M 至下面设置的缓冲池(buffer pool)大小的 1/n。较大的值,可以减少刷新缓冲池的次数,从而减少磁盘 I/O。但是大的日志文件意味着在崩溃时需要更长的时间来恢复数据。 日志文件总和必须小于 2 GB,3.23.55 和 4.0.9 以上为小于 4 GB。在 my.cnf 中以数字格式设置。

innodb_log_buffer_size

InnoDB 将日志写入日志磁盘文件前的缓冲大小。理想值为 1M 至 8M。大的日志缓冲允许事务运行时不需要将日志保存入磁盘而只到事务被提交(commit)。 因此,如果有大的事务处理,设置大的日志缓冲可以减少磁盘I/O。 在 my.cnf 中以数字格式设置。

innodb_flush_log_at_trx_commit

通常设置为 1,意味着在事务提交前日志已被写入磁盘, 事务可以运行更长以及服务崩溃后的修复能力。如果你愿意减弱这个安全,或你运行的是比较小的事务处理,可以将它设置为 0 ,以减少写日志文件的磁盘 I/O。这个选项默认设置为 0。

innodb_log_arch_dir

The directory where fully written log files would be archived if we used log archiving. 这里设置的参数必须与 innodb_log_group_home_dir 相同。 从 4.0.6 开始,可以忽略这个参数。

innodb_log_archive

这个值通常设为 0。 既然从备份中恢复(recovery)适合于 MySQL 使用它自己的 log files,因而通常不再需要 archive InnoDB log files。这个选项默认设置为 0。

innodb_buffer_pool_size

InnoDB 用来高速缓冲数据和索引内存缓冲大小。 更大的设置可以使访问数据时减少磁盘 I/O。在一个专用的数据库服务器上可以将它设置为物理内存的 80 %。 不要将它设置太大,因为物理内存的使用竞争可能会影响操作系统的页面调用。在 my.cnf 中以数字格式设置。

innodb_additional_mem_pool_size

InnoDB 用来存储数据字典(data dictionary)信息和其它内部数据结构(internal data structures)的存储器组合(memory pool)大小。理想的值为 2M,如果有更多的表你就需要在这里重新分配。如果 InnoDB 用尽这个池中的所有内存,它将从操作系统中分配内存,并将错误信息写入 MySQL 的错误日志中。在 my.cnf 中以数字格式设置。

innodb_file_io_threads

InnoDB 中的文件 I/O 线程。 通常设置为 4,但是在 Windows 下可以设定一个更大的值以提高磁盘 I/O。在 my.cnf 中以数字格式设置。

innodb_lock_wait_timeout

在回滚(rooled back)之前,InnoDB 事务将等待超时的时间(单位 秒)。InnoDB 会自动检查自身在锁定表与事务回滚时的事务死锁。如果使用 LOCK TABLES 命令,或在同一个事务中使用其它事务安全型表处理器(transaction safe table handlers than InnoDB),那么可能会发生一个 InnoDB 无法注意到的死锁。在这种情况下超时将用来解决这个问题。这个参数的默认值为 50 秒。在 my.cnf 中以数字格式设置。

innodb_flush_method

这个参数仅仅与 Unix 相关。这个参数默认值为 fdatasync。 另一个设置项为 O_DSYNC。这仅仅影响日志文件的转储,在 Unix 下以 fsync 转储数据。InnoDB 版本从 3.23.40b 开始,在 Unix 下指定 fdatasync 为使用 fsync 方式、指定 O_DSYNC 为使用 O_SYNC 方式。由于这在某些 Unix 环境下还有些问题所以在 'data' versions 并没有被使用。

innodb_force_recovery

警告:此参数只能在你希望从一个被损坏的数据库中转储(dump)数据的紧急情况下使用! 可能设置的值范围为 1 - 6。查看下面的章节 'Forcing recovery' 以了解这个参数的具体含义。参数设置大于 0 的值代表着 InnoDB 防止用户修改数据的安全度。从 3.23.44 开始,这个参数可用。在 my.cnf 中以数字格式设置。

innodb_fast_shutdown

InnoDB 缺少在关闭之前清空插入缓冲。这个操作可能需要几分钟,在极端的情况下可以需要几个小时。如果这个参数据设置为 1 ,InnoDB 将跳过这个过程而直接关闭。从 3.23.44 和 4.0.1 开始,此参数可用。从 3.23.50 开始,此参数的默认值为 1。

innodb_thread_concurrency

InnoDB 会试图将 InnoDB 服务的使用的操作系统进程小于或等于这里所设定的数值。此参数默认值为 8。如果计算机系统性能较低或 innodb_monitor 显示有很多线程等侍信号,应该将这个值设小一点。如果你的计算机系统有很我的处理器与磁盘系统,则可以将这个值设高一点以充分利用你的系统资源。建议设值为处理器数目+ 磁盘数目。 从 3.23.44 和 4.0.1 开始,此参数可用。在 my.cnf 中以数字格式设置。

转载于:https://www.cnblogs.com/liulei-LL/p/7696120.html


http://www.niftyadmin.cn/n/1442975.html

相关文章

go 语言中 byte 与 int 互转, string 与 byte 互转

为什么80%的码农都做不了架构师?>>> package mainimport "bytes" import "encoding/binary" import "fmt" import "strings"func main() {b : []byte{0x00,0x00,0x03,0xe8}bin_buf : bytes.NewBuffer(b)var x …

玩转微软IE浏览器:给IE加上特定参数(转)

玩转微软IE浏览器:给IE加上特定参数(图) 众所周知,IE的主程序是Iexplore.exe,和许多软件一样,我们也可以给该文件加上参数使用,有时会有意想不到的效果。 首先我们说说怎样给IE的主程序Iexplore.exe加上参数。打开“…

七周二次课

2019独角兽企业重金招聘Python工程师标准>>> 七周二次课 10.6 监控io性能 10.7 free命令 10.8 ps命令 10.9 查看网络状态 10.10 linux下抓包 10.6 监控io性能 在日常运维过程中,除了CPU、内存外,磁盘的io也是非常重要的指标。有时候CPU、…

ABP学习笔记

1.引导Abp系统 2.AbpSwaggerDemo 3.加密类 4.忽略webapi中的某个方法 5.Http动词 1.引导Abp系统 using System; using Abp; using Abp.Dependency; using Castle.Facilities.Logging;namespace AbpEfConsoleApp {public class Program{static void Main(string[] args){//引导A…

myeclipse生成实体类 mysql_用MyEclipse自动生成hibernate映射文件和实体类

建web工程,使用Hibernate的时候,在工程里一个一个创建实体类和映射文件太麻烦,特别是大项目,好几百张表,每个表跟每个表的对应关系很负责,一张表中可能有超级多的字段,浪费时间,还容…

AspectJ学习笔记之Pointcut(转)

Pointcutspublic pointcut accountOperations :call(*Account.*(..))这是定义了一个pointcut,其中:public 是access speciferpointcut 是keywordaccountOperations 是poincut namecall是pointcut type;;pointcut能与…

excel转json_如何把excel表格处理成json数据

遇到一个难题,需要把一个excel处理成json数据格式,如果数据不多的情况还可以手动处理,问题来了,这个excel有2万多条数据需要处理成json格式如:[{"key1":"value1","key2":"value2"},{&quo…

【Python3】字典

字典是key - value 数据类型 创建 info {stu01: jack,stu02: mike,stu03: jay } 字典的特性: dict是无序的key必须是唯一的,天生去重增 >>>info[stu05] kit #自动创建 {stu01: jack,stu02: mike,stu03: jay,stu05,kit} 删 >>> info.…