我有一个例子,app有很多用户,他们的活动表上有数百万行的统计数据-关于销售流量的高流量网站=数据增长令人难以置信。在用户活动表中还有一个时间戳列。您是否建议按年分区,并根据时间戳按月分区?更好的是,我认为按月,然后按天可能会更好。大多数检查是今天,昨天,过去7天,过去30天,或者这个月或上个月的时间戳。如果用户想要按天或按月检查今年的统计数据,是否有性能问题?关于访问的详细信息有时会获得巨大的数字,而且加载速度似乎很慢。我提到的分区方式会有帮助吗?在每个查询中,都会检查时间戳在X和Y之间的位置。或者按用户id分区?根据我对数据库分区的了解,我认为by date是最好的,可以提高性能。要进行分区,我需要将时间戳列添加到主索引中。也许仅此一项就可以提高性能。我真的会问,因为表很大,这些操作会花费很多时间,锁,等待……也许,使用分区,根据时间戳范围在特定分区中进行MySQL检查,可能会进一步提高性能?服务器版本: 10.1.41-MariaDB-1~bionic - mariadb.org二进制发行版。最好只包含一个“未来”分区?有没有办法让它自动创建“未来”分区的功能,如月(时间戳),然后为子分区日(时间戳)?听起来已经是超大型的存储过程了。只是为了更好地了解分区。谢谢!
发布于 2019-11-26 09:55:01
分区本身并不能提供性能。
在极少数的用例中,PARTITION提供了帮助。一种是基于时间戳/日期时间的DELETEing“旧”数据。但我没听说你需要这个?
请提供您现在拥有的CREATE TABLE,以及您需要运行的主要查询。一些索引技术可能会有所帮助。或一些汇总表。
http://mysql.rjweb.org/doc.php/partitionmaint
https://stackoverflow.com/questions/58703302
复制相似问题