gpt4 book ai didi

Mysql 'Partitioning' vs 拆分数据到不同的表

转载 作者:可可西里 更新时间:2023-11-01 08:21:40 24 4
gpt4 key购买 nike

我们有一个名为 posts_content 的 mysql 表。

结构如下:

CREATE TABLE IF NOT EXISTS `posts_content` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`post_id` int(11) NOT NULL,
`forum_id` int(11) NOT NULL,
`content` longtext CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=79850 ;

问题是表格越来越大了。许多千兆字节的数据(我们有一个爬行引擎)。

我们每天都在向表中插入数据,但很少检索数据。现在,随着 table 变得越来越大,处理 table 变得越来越困难。

我们讨论了两种可能性

  1. 使用 MySQL 的分区功能使用 forum_id 对表进行分区(大约有 50 个 forum_id,因此将有大约 50 个分区。请注意,即使每个分区最终都会增长到许多千兆字节的数据,甚至最终可能需要自己的驱动器
  2. 为每个 forum_id 创建单独的表并像这样拆分数据。

我希望我已经清楚地解释了问题。我需要知道的是,从长远来看,以上两者中哪一个是更好的解决方案。什么是副词。 dis 副词两种情况。

谢谢你

最佳答案

不同之处在于,在第一种情况下,您让 MySQL 进行分片,而在第二种情况下,您自己进行分片。 MySQL 不会扫描任何不包含数据的分片,但是如果您有一个查询WHERE forum_id IN(...),它可能需要扫描多个分片。据我所知,在那种情况下,操作是同步的,例如MySQL 一次查询一个分区,您可能希望异步实现它。一般自己做分区比较灵活,但是简单的分区,根据forum_id,如果一次只查询1个forum_id,MySQL分区就OK了。

我的建议是阅读有关分区的 MySQL 文档,尤其是 restrictions and limitations节,然后再决定。

关于Mysql 'Partitioning' vs 拆分数据到不同的表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6491779/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com