【问题标题】:MySQL partitioning because of users and timestamp date rangesMySQL 分区,因为用户和时间戳日期范围
【发布时间】:2019-11-05 01:38:53
【问题描述】:

我有一个应用程序的案例,该应用程序有大量用户,他们的活动表上有数百万行的统计数据 - 关于销售流量的高流量网站 = 数据增长得令人难以置信。用户活动表中还有一个时间戳列。您是否建议根据时间戳按年分区和按月分区?更好的是,我认为按月然后按天会更好。大多数检查是针对今天、昨天、过去 7 天、过去 30 天、本月或上个月的时间戳。任何性能问题,如果用户想按天或按月检查今年的统计数据?访问的详细信息有时会获得大量数据,而且加载速度似乎很慢。我提到的分区方式会有所帮助吗?在每个查询中,都会检查时间戳在 X 和 Y 之间的位置。或者可能按用户 ID 分区?根据我对数据库分区的了解,我认为按日期是最好的,并且可能会提高性能。要进行分区,我需要将时间戳列添加到主索引。也许仅此一项就可以提高性能。我真的问,因为表很大,这些操作将花费大量时间,锁定,等待......也许还有,通过分区,让 MySQL 根据时间戳范围检查特定分区,可能会进一步提高性能?服务器版本:10.1.41-MariaDB-1~bionic - mariadb.org 二进制发行版。最好只包括一个“未来”分区?有什么方法可以让它自动创建“未来”分区,其功能类似于 MONTH(timestamp),然后是子分区 DAY(timestamp)?听起来已经像超大型存储过程了。只是更好地了解分区。谢谢!

【问题讨论】:

    标签: mysql indexing database-partitioning


    【解决方案1】:

    分区本身并不提供性能。

    PARTITION 提供帮助的用例很少。一个是基于时间戳/日期时间的DELETEing“旧”数据。但我没听说你需要那个?

    请提供您现在拥有的CREATE TABLE,以及您需要运行的主要查询。一些索引技术可能会有所帮助。或者一些汇总表。

    http://mysql.rjweb.org/doc.php/partitionmaint
    http://mysql.rjweb.org/doc.php/index_cookbook_mysql
    http://mysql.rjweb.org/doc.php/summarytables

    【讨论】:

      猜你喜欢
      • 2012-08-06
      • 2011-04-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-05
      • 2015-11-11
      • 1970-01-01
      • 2012-04-15
      相关资源
      最近更新 更多