为什么交换影响了mysql性能
MySQL或使用其他应用程序或操作系统的框太多的内存行为滑稽和使用更多的内存和高速缓存的应用推动互换。这将导致交换,造成性能问题。这是显而易见的。但如何坏的呢?如果你指望它同正常磁盘IO的框正在或不如它?
交换会影响你的表现不仅仅是普通IO和这里有3原因。如果你知道更多信息,请让我知道,我的口味这3人已经够糟,所以我没有更多的期待。
在交换文件缓存将成倍木卫一相比,只有较少的缓存。会发生什么事,在缓存页面取代,超出自身交换?首先,你必须找到空间来交换在页面(我们谈论的内存压力吗?),这意味着交换了一些网页。这通常发生在后台,但仍然有许多工作要做。当网页的交换是在第二IO和最后你页面被缓存从硬盘驱动器的缓存读取。这给我们3 IO的,而不是一个。尼斯:)
法拉盛脏页,甚至抛弃的网页会造成额外的木卫一速度变慢。
扭曲了所有的数据库内部算法调整为在内存中的东西,如果被他们开始处理数据的磁盘上,他们往往只是停止与任何有效的工作,是合理的水平算法 - 交易时,数据库与磁盘上的数据,往往使用不同的设置其中的算法进行了优化,内部监督办公室的数量限制,或使它们更加顺序。其中大部分被设计在SSD的时代。例如,在MySQL的插入缓冲区作出特别的努力以避免(延迟)的IO接口。如果碰巧去交换文件,将超过原有的精神。后台线程数的设计与假设他们可以检查缓冲池页状态非常有效,再次停止工作,尽快页面访问导致磁盘IO。
升级锁定/如果突破闭锁的内部运作不坏自己足够让我们看看没有什么交换的并行(多CPU,多客户端)处理。数据库锁/锁存器通常设计举行尽可能短的时间。执行的时间花在线程少部分持有排他锁系统将更好的规模。这是一个很严重的不举行任何重要的锁,而你正在做的IO的需要很长时间磁盘IO。当交换系统所有这些得到弄糟 - 数据库的想法时,它正在采取一些指示锁只有它可以很长一段时间,而木卫一完成 - 如果这是关键锁就可以看到系统的一切等待这木卫一,即使交易,与数据的工作是不是在交换文件。
底线:您应该配置制度,使没有交换活动将在正常经营业务。交换文件本身可能是合理的 - 如果你有一些意外的内存消耗穗您可能更愿意看到放缓,而不是MySQL的是,由于内存不足的死亡,但对他们的反应不及时和不正常的对待这种情况。