很长一段时间以来,我一直想知道MySQL是如何在向server.We添加更多内存的同时,在尽可能多地利用硬件、限制系统复杂性和降低性能价格(性价比)的ratio.Please之间找到一个平衡的。
发布于 2011-06-02 06:40:31
每个环境都没有一刀切的解决方案,但是性能调优的过程总是一样的。性能优化是一个迭代过程:
当您解决每个瓶颈时,您可能会发现系统的另一部分现在是限制因素。这就是为什么你需要重复这个过程,直到你对结果感到满意为止。
在所有级别的性能分析中,主要要寻找的是延迟。哪些活动占用的时间最多?哪些活动处于用户活动的关键路径?关键路径中的延迟是用户痛苦的直接度量,而其他指标,如吞吐量、iops、cpu和内存使用没有明显的意义。
识别慢速查询并优化它们--如果可能的话,重写查询或添加索引,但如果没有,则添加硬件。如果您的指标显示查询的大部分时间用于等待从磁盘读取,那么添加内存以增加缓存将有助于解决这个瓶颈。如果大部分时间用于等待同步写入磁盘,则获取更多磁盘或获得更快的磁盘(例如SSD)。如果大部分时间用于等待CPU时间或CPU上,则获得更多或更快的CPU。
如果您有机会使用DTrace在系统上运行数据库,请阅读布兰登·格雷格( Brendan )的DTrace书并开悟。
发布于 2011-06-02 06:40:23
很长一段时间以来,我一直想知道当您向服务器添加更多内存时,MySQL是如何扩展的
就像Oacle、SQL Server和所有其他数据库服务器一样。数据库操作的物理条件不变。
我们希望在尽可能多地利用硬件、限制系统复杂性和降低性价比的ratio.Please之间取得平衡,为这个问题提供适当的解决方案。
什么是最理想的汽车?
同样的答案:视情况而定。你没有说任何相关的回答,投票结束。
看,我运行一个sql服务器。小型安装-只有16 ssd的内存,4个核心,8个快速硬盘和1个ssd+启动驱动器。是的,这是很小的-在另一个世界(指定合同),我工作的甲骨文exadata与21000 gb的数据库空间,比大多数超级跑车的成本更高。因为我们需要它。我的下一次升级到我的SQLServerr将有80张光盘,128 get的内存,并获得更多的ssd。这里的大多数人都会认为它很大,我认为它是一个不错的低端服务器。
你可能在一个联盟,你认为60 is的SSD是昂贵的。你不知道。你什么都不说,你需要做什么,你有多少负担。你想让我们回答什么?
唯一明智的答案是:调整你的瓶颈,并计划扩张。例如,SuperMicro有高达72张光盘的4机架单元高服务器机箱,外加一个mobherboard。2个机架单位= 24盘。其中之一为您提供了计算机可伸缩性。多处理器CPU板明智,然后插入一个。RAM也是一样。解决瓶颈,因为他们出现。当你得到更高的数据库时,减少系统的复杂性是一种徒劳的操作。这就像一个五星级厨师说他不想做饭,而更喜欢预置食物。高性能的数据库系统是复杂的。处理好它。
发布于 2011-06-02 08:22:03
这取决于你使用的发动机。在这方面,最常见的MyISAM引擎是相当愚蠢的--它自己不做任何有意义的内存管理。几乎所有东西都留给操作系统。如果O/S的分页算法能够确定引擎下一步可能需要什么,那么它将在文件系统缓存中保留正确的分区。否则,它将丢弃它们,并且必须再次从磁盘加载它们,以便进行下一次查询。
由于O/S不了解MyISAM数据结构,因此它不会优先使用数据库的索引页,这是因为它与数据库的“最近使用”数据相似。计算世界上的每一个“适当的”DBMS都会做自己的内存管理,有时甚至会将线程管理作为性能优化措施--从而在缓存时优先使用索引表,并在将已更改的数据行页写入磁盘(“惰性写入器”)之前将其保留在内存中一段时间。
因此,对于一个主要读取的MyISAM数据库来说,确定的措施是在它所服务的数据库的大小的系统上获得更多的内存--这样您就可以确保缓存所有索引页并减少昂贵的I/O操作。
而且,如果您希望使用“真实世界”查询(超过用于PHP应用程序的"SELECT * definitely 10“)来寻找平衡和可调的性能,那么您肯定应该看看不同的DBMS。
https://serverfault.com/questions/276189
复制相似问题