mysql服务器参数--innodb引擎

mysql服务器参数有很多,如果想查看某一项参数的具体含义,可以使用mysqld --verbose --help | grep

innodb存储引擎中的参数都是以innodb开头的:

innodb_buffer_pool_size:

  这个参数定义了innodb存储引擎的表数据和索引数据的最大内存缓冲区大小,和myisam存储引擎不同,myisam的key_buffer_size只缓存索引键,而innodb_buffer_pool_size却是同时为数据块和索引块做缓存,这个特性和oracle是一样的,这个值越高,访问表中数据所需要的磁盘IO越少,在一个专用的数据库服务器上,可以设置这个参数达到机器 物里内存大小的80%。但是建议不要将他设置的太大,因为对物里内存的竞争可能在操作系统上导致内存调度。

innodb_flush_log_at_trx_commit:

innodb_additional_mem_pool_size:

  这个参数是innodb存储引擎用来存储数据库结构和其他内部数据结构的内存池大小,其默认值为1M,应用程序表越多,则需要在这里分配越多的内存。如果innodb用光了这个池内的内存,则innodb开始从操作系统分配内存,并且往mysql错误日志里写警告信息。没有必要给这个缓冲分配非常大的空间,在应用相对稳定的情况下,这个缓冲池大小也相对稳定。

innodb_lock_wait_timeout:

  mysql可以自动的监测行锁导致的死锁并进行相应的处理,但是对于表锁导致的死锁不能自动的监测,所以该参数主要被用于在出现类似情况的时候等待指定的时间后回滚。系统默认是50秒。

innodb_support_xa:

  该参数设置是否支持分布式事务,默认值是on或1,表示支持分布式事务。如果确认应用中不需要使用分布式事务,可以关闭这个参数,减少磁盘刷新次数并获得更好的innodb性能。

innodb_log_buffer_size:

  该参数是日志缓存大小,默认的设置在中等强度写入负载以及较短事务的情况下,一般可以满足服务器性能的要求。如果存在更新操作峰值或者负载较大,就应该考虑加大它的值。如果设置太高会浪费内存,因为它每秒都会刷新一次,因此无需设置超过一秒所需要的内存空间。通常设置为8~16MB就足够了。越小的系统它的数值就越小。默认为8M。

innodb_log_file_size:

  该参数含义是一个日志组中每个日志文件的大小。此参数在高写入负载尤其是大数据集的情况下很重要,这个值越大则性能越高,但是副作用是当系统灾难时恢复时间会加大。5.5默认是5Mb,5.6默认是50Mb。

时间: 2024-10-11 06:29:50

mysql服务器参数--innodb引擎的相关文章

MySql锁与InnoDB引擎

MySql锁与InnoDB引擎 mysql的锁是面试中很高频问题,也是我们在日常开发中经常会遇到但是我们并没有注意到的地方.我把我自己理解的锁通过本篇博文分享出来,由于锁需要结合事务来理解,本文只介绍锁的基本概念,同样为了理解事务会更加深刻,先介绍了InnoDB的一些基础概念,也是记录自己的学习,欢迎大家一起探讨交流. 下一篇:mysql的事务与mvcc 锁的分类: 按照锁的粒度来分 全局锁: 锁的是整个database,类比一个库为一栋大楼,那此时就是锁的整栋楼的大门 表级锁: 锁的是某个ta

MySQL系列:innodb引擎分析之线程并发同步机制

innodb是一个多线程并发的存储引擎,内部的读写都是用多线程来实现的,所以innodb内部实现了一个比较高效的并发同步机制.innodb并没有直接使用系统提供的锁(latch)同步结构,而是对其进行自己的封装和实现优化,但是也兼容系统的锁.我们先看一段innodb内部的注释(MySQL-3.23): Semaphore operations in operating systems are slow: Solaris on a 1993 Sparc takes 3 microseconds (

查看MySQL是否支持InnoDB引擎以及不支持的解决办法

通过命令行进入mysql SHOW variables like "have_%"; 显示结果中会有如下3种可能的结果: have_innodb YES have_innodb NO have_innodb DISABLED 这3种结果分别对应: 已经开启InnoDB引擎 未安装InnoDB引擎 未启用InnoDB引擎 对第二种未安装,只需要安装即可: 针对第三种未启用,则打开mysql配置文件,找到 skip-innodb项,将其改成#skip-innodb,之后重启mysql服务

MySQL系列:innodb引擎分析之文件IO

innodb作为数据库引擎,自然少不了对文件的操作,在innodb中所有需要持久化的信息都需要文件操作,例如:表文件.重做日志文件.事务日志文件.备份归档文件等.innodb对文件IO操作可以是煞费苦心,其主要包括两方面,一个是对异步io的实现,一个是对文件操作管理和io调度的实现.在MySQL-5.6版本的innodb还加入了DIRECT IO实现.做了这么多无非是优化io操作的性能.在innodb的文件IO部分中,主要实现集中在os_file.*和fil0fil.*两个系列的文件当中,其中o

MySQL系列:innodb引擎分析之基础数据结构

近一年来一直在分析关于数据库相关的源码,前段时间分析了levelDB的实现和BeansDB的实现,这两个数据库网络上分析的文章很多,也都比较分析的比较深,所以也就没有太多必要重复劳动.最近开始关注关系数据库和MYSQL,当然主要还是数据库存储引擎,首先我还是从innodb这个最流行的开源关系数据库引擎着手来逐步分析和理解.我一般分析源码的时候都是从基础的数据结构和算法逐步往上分析,遇到不明白的地方,自己按照源码重新输入一遍并做对应的单元测试,这样便于理解.对于Innodb这样的大项目,也应该如此

mysql服务器参数

以下列出了一些主要需要关注的参数.要看更全的,找Mysql官方文档,注意要对应版本.max_connect_errors最大错误连接数,达到时会阻止连接,建议大于5000max_connections并行的最大连接数,建议2000-5000max_used_connections服务启动后曾经达到的最大连接数,若达到max_connections,则表示某个时刻存在突然的高峰连接,可能会有性能问题.threads_connected当前连接数.threads_running指同时运行的线程数目.

MySQL系列:innodb引擎分析之内存管理

在innodb中实现了自己的内存池系统和内存堆分配系统,在innodb的内存管理系统中,大致分为三个部分:基础的内存块分配管理.内存伙伴分配器和内存堆分配器.innodb定义和实现内存池的主要目的是提供内存的使用率和效率,防止内存碎片和内存分配跟踪和调试.我们先来看看他们的关系和结构. 以下是它的关系结构图: 上图中的: ut_mem_block块是基础内存管理 Buddy allocator是内存伙伴分配器 mem_heap是内存堆分配器 1.基础内存管理 innodb中的内存分配和内存释放是

mysql性能优化之服务器参数配置-内存配置

MySQL服务器参数介绍 MySQL获取配置信息路径 命令行参数 mysqld_safe --datadir=/data/sql_data 配置文件 mysqld --help --verbose | grep -A 1 'Default options' /etc/my.cnf/ /etc/mysql/my.cnf /home/mysql/my.cnf ~/.my.cnf MySQL配置参数的作用域 全局参数(需要重新登录才能生效) set global 参数名=参数值; set @@glob

mysql数据库innodb引擎的一个重要内核参数swappiness

在linux内核中有一个叫 swappiness 的参数.可以调整内存的使用方式. 默认情况下,这个数值为60,这意味着内核会比较多的为文件系统提供内存作为缓存,甚至会将一些程序占据的内存交换到swap中以腾出内存. 这正好与使用innodb引擎的mysql数据库有冲突:innodb缓冲池本来就相当于文件系统的缓存,它会缓存住一部分读取过的数据库. 这部分内存通常不会怎么修改变动,所以操作系统就更会倾向于交换出这部分内存到swap中.这样,当mysql真的需要innodb缓冲区中 的数据时,操作