不同的存储引擎对CPU的使用方式不同吗?
#1 楼
对于MySQL,除了存储引擎分为以下两个基本类别外,没有其他存储引擎之间的比较:事务处理(符合ACID)
非事务处理
MySQL具有使用多个存储引擎的功能
InnoDB(MySQL 5.5的默认值)
MyISAM(MySQL 5.5之前的默认值)
ARCHIVE
BLACKHOLE
CSV
MEMORY
MRG_MYISAM
FEDERATED
NDB aka MySQL Cluster
对于列出的存储引擎,唯一符合ACID标准的是InnoDB和NDB。为什么要提这个重要事项?原因有两个:
其他存储引擎根本无法从更多的内核中受益,除了基本的磁盘I / O,CPU使用率和整体吞吐量。
代码对于每个非事务性存储引擎,它基本上规定了14个内部操作(无论存储引擎如何),其设计都不旨在利用多核的访问。 XtraDB具有您可以设置的选项,以访问多个内核(Percona Server这样做的时间更长了)。实际上,Percona注入了大约30,000行代码,专门用于通过每个新的GA版本发布的MySQL源代码来增强InnoDB的性能。我们可以肯定的是,Oracle已经从自己的智囊库中添加了自己的增强功能,以便在InnoDB中运行以进行多核操作(自MySQL 5.1.38起)。
需要对与行结合的数据执行MVCC / page锁定,现在可以检测,测量和配置事务性能。
如果我了解到使用多核的一件事,那就是您必须有效地调整InnoDB,而不仅仅是依赖InnoDB开箱即用。
UPDATE 2011-09-20 08:03 EDT
关于使InnoDB受益于所有核心,我们需要保持透明。内核还必须注意数据库服务器中的其他事项(操作系统,磁盘,内存,应用程序,监视等)。对于那些预算有限的人,许多人倾向于让数据库服务器也提供NFS,Munin的监视,对JBoss,PHP的应用程序支持,并且清单还在继续。如果您希望MySQL(更具体地说是InnoDB)使用更多的内核,则数据库服务器必须专用于MySQL,并且OS / Disk / Memory必须仅倾向于MySQL。从这个角度来看,InnoDB无疑会使用更多的内核。
对于InnoDB插件,提到它只是为了展示早期的举措,以使MySQL拥有更好的InnoDB(例如,Oracle)。 ,仍然还没有从舌头上滚下来)。从MySQL 5.1.38中可以明显看出新的变量可以吸引更多的核心活动。例如,innodb_read_io_threads和innodb_write_io_threads(自MySQL 5.1.38起)都为读取和写入分配了指定数量的线程。默认值是4,最大值是64。默认值和最大值设置如此之不同(4-64)表明InnoDB与您配置它一样多线程且占用大量内核!!!!!!
Percona领导了使用InnoDB访问更多内核的MySQL社区。因此,MySQL开始效仿。我必须承认,Oracle(yuck)为进行更多的核心活动做了必要的改进。
评论
如您上面建议的那样在MySQL 5.5下调整的InnoDB是否可以受益于所有内核? {对InnoDB插件有点困惑}
–里克·詹姆斯(Rick James)
2011-09-20 8:51
@Rick-在我的回答中进一步解决了您的评论
– RolandoMySQLDBA
2011-09-20 12:02
在这里,这似乎是一个完全不同的故事,而在使用多核方面,MyISAM似乎面目全非,但在dba.stackexchange.com/questions/5974/best-of-myisam-and-innodb上却是另一面优点。因此,决定走哪条路似乎很困难。
–里克·詹姆斯(Rick James)
2011-09-21 15:39
这完全取决于您使用MyISAM或InnoDB的目的。您愿意缓存多少?您是否依赖MySQL或其他缓存机制(例如varnish和memcached)进行数据检索?您的硬件是否针对InnoDB进行了适当的扩展?是98%的SQL SELECT?表格是高速读取的最佳格式吗?事先回答这些问题应指导我们进行存储引擎选择,适当的配置,硬件选择,甚至达到更深层次的内容,例如高可用性,数据库拓扑,读/写拆分,并且此列表可以继续。
– RolandoMySQLDBA
2011-09-21 15:50
#2 楼
我发现谈论使用内核的存储引擎可能会对初学者产生误导。如果程序具有足够的多线程,则操作系统将在尽可能多的内核上调度该程序。阻止线程并发运行。所有存储引擎都需要互斥锁,但是MyISAM中肯定有一些互斥锁。 -我喜欢拥有许多用于处理面向用户请求的工作负载的内核。有很多可以减少查询时间之间的差异。就像在超市中打开12条通道而不是2条通道排队一样。
更新:我写了一篇博客文章,说明为什么垂直可伸缩性(多核)很重要。
评论
提及房间中的大象+1:互斥量竞争
–cerd
2014年2月11日下午4:23
评论
相关:dba.stackexchange.com/questions/5666/…其相关但未解决不同存储引擎对多核CPU的行为。
确实。这就是为什么没有“关闭重复”投票的原因...
这是一个很棒的社区,我仍在学习如何使用此站点。
嗨,哥们,看看这里:mysql-cluster-blog.com,您至少发现了一些东西