我们正在针对我们的测试RDS实例运行很少的基准查询,以检查分区的效率,然后将其调整到目前没有分区的生产中。
我们有很少的时间序列数据表,因此基于RANGE( unix_timestamp(event_time) )的分区。我们对拥有数百万行的表集(分区表和非分区表)运行的查询花费了太多的时间,而我们现在却陷入了困境。
我们从MySQL工作台中可以很明显地看到,获取时间(依赖于网络)占据了相当长的时间。我们关心的只是我们运行的查询的运行时持续时间。我们是否可以跳过获取的结果部分,只获得相应查询的运行时持续时间?
我们尝试的查询示例:
SELECT *
FROM app_event1
WHERE `event_time` BETWEEN '2018-01-01 00:00:01' AND '2018-02-30 23:59:59';我们为节省时间所做的就是限制结果,
SELECT *
FROM app_event1
WHERE `event_time` BETWEEN '2018-01-01 00:00:01' AND '2018-02-30 23:59:59'
Limit 0,1000000;这不符合现场场景。
发布于 2018-04-14 23:46:15
(我有太多的评论要评论.)
SHOW CREATE TABLE。有许多细节是不可能的。EXPLAIN SELECT ...。我们需要讨论它是否真的在做任何修剪。。
event_time >= '2018-01-01'
AND event_time < '2018-01-01' + INTERVAL 2 MONTH以我的经验来看,
PARTITION BY RANGE(event_time)的唯一目的是清除旧数据。一旦你已经解决了我的大部分意见,标题问题应该是没有意义的。
https://dba.stackexchange.com/questions/202603
复制相似问题