本文目录
mysql 参数调优(11)之innodb_buffer_pool_instances设置多个缓冲池实例
MySQL 5.5引入了缓冲实例作为减小内部锁争用来提高MySQL吞吐量的手段。在5.5版本这个对提升吞吐量帮助很小,然后在MySQL 5.6版本这个提升就非常大了,所以在MySQL5.5中你可能会保守地设置innodb_buffer_pool_instances=4,在MySQL 5.6和5.7中你可以设置为8-16个缓冲池实例。设置后观察会觉得性能提高不大,但在大多数高负载情况下,它应该会有不错的表现。对了,不要指望这个设置能减少你单个查询的响应时间。这个是在高并发负载的服务器上才看得出区别。比如多个线程同时做许多事情。 5.7、8.0 下INNODB_BUFFER_POOL_INSTANCES默认为1,若mysql存在高并发和高负载访问,设置为1则会造成大量线程对BUFFER_POOL的单实例互斥锁竞争,这样会消耗一定量的性能的。 pool_instances 可以设置为cpu核心数,它的作用是: 1)对于缓冲池在数千兆字节范围内的系统,通过减少争用不同线程对缓存页面进行读写的争用,将缓冲池划分为多个单独的实例可以提高并发性。可以类比为 java中的 ThreadLocal 线程本地变量 就是为每个线程维护一个buffer pool实例,这样就不用去争用同一个实例了。相当于减少高并发下mysql对INNODB_BUFFER缓冲池的争用。 2)使用散列函数将存储在缓冲池中或从缓冲池读取的每个页面随机分配给其中一个缓冲池实例。每个缓冲池管理自己的空闲列表, 刷新列表, LRU和连接到缓冲池的所有其他数据结构,并受其自己的缓冲池互斥量保护。
mysql如何启用innodb
则表示你的版本没有支持innodb引擎,你必须去重新安装支持innodb引擎的版本(如果是自己编译安装的, 要加上innodb对应的参数). 确定你安装的mysql版本支持innodb后,1、停止 mysql服务 2、my.cnf文件,把skip-innodb注释 3、在目录中把ibdata1、ib_logfile0、ib_logfile1 这三个文件删掉 4、启动mysql 服务
mysql 怎么开启innodb
首先,你安装mysql已经支持innodb引擎才行,可以通过以下命令查看:mysql》 show engines;若结果中列Engine有innodb的记录,且列Support为"YES"则表示支持.若列Engine有innodb的记录,但且列Support为"NO",则说明你参数文件中屏蔽了innodb引擎的使用,你去参数配置文件中注释掉"#skip-innodb"项.若列Engine没有innodb的记录,则表示你的版本没有支持innodb引擎,你必须去重新安装支持innodb引擎的版本(如果是自己编译安装的, 要加上innodb对应的参数).确定你安装的mysql版本支持innodb后,你"表结构是MyISAM,并且里面有了一些数据,如果改成INNODB"很容易实现,可以直接用命令更新表的存储引擎即可,如:alter table tb_name engine=innodb;(版本5.0后都可以用engine参数)或alter table tb_name type=innodb;(低版本中用type参数)