我们的数据库服务器(主要是基于Debian的稳定的软件包(=目前喘息)似乎有大约4倍以上的内核相同的工作量负荷3.2.0-4-amd64然后在它的前面的2.6.32-5-amd64内核。与所有的包中,我们可以清楚的其他内核同样与启动看到差异,我不知道为什么。问题是,我没有看到太多的 IO 或 CPU 负载差异。
设置默认kernel.sched_min_granularity_ns和kernel.sched_latency_ns回到它的 2.6.32价值观可以帮助一点点(三次负载,而不是4倍),而不是我们希望的水平。由于许多内核设置发生了变化,我们很难盲目地将新内核设置为旧内核的默认值2.6。
有没有其他人有这方面的经验?如果是这样,是什么导致了这种情况(理想情况下:如何解决)?
由于它与内核相关,因此 sysctl 值的差异可能会引起人们的兴趣:这里是 2 的差异(粘贴合并以防止出现过长的问题)。
编辑:目前我们正在调查这个 SO 答案,看看是否适用。
tl;dr:如何获得正在运行的 MySQL 服务器的 select 语句的平均查询执行时间?
目前我们有几个数据库服务器,其中一些从属服务器被视为只读服务器。为了希望提高性能,我们使用分区表设置了一个测试(其中包含经常访问的新数据,以及已决定的权力应该保留在该表中的大量历史数据)。
现在,我们已经基于日期时间列进行了分区,并且在一些手动测试中,有些查询更快,有些查询更慢(显然,因为很大一部分明确限制了该列的结果,而有些查询明确不希望那样) )。
一切都很好,似乎一切正常,分区服务器上的慢查询计数略高于非分区服务器上的平均慢查询计数。这是可以预料的,但通常,这些查询也有较低的优先级,然后将那些不想要的最新数据。然而,很难客观地比较 2 个从站之间的性能。大多数加速的查询一开始不在慢日志中,服务器上的平均负载大致相同等。
理想情况下,我想要 2 个从站上所有选择查询的平均执行时间,因此我可以比较分区后是否有整体加速或降级。In mysqlreportor mysqladmin extnothing 作为我可以用于此的值,甚至一般查询日志似乎都不包含此值。我已经考虑将long_query_timefor 0设置了一段时间,但这确实会减慢服务器的速度,所以我愿意接受其他选项,如果有的话?