gpt4 book ai didi

mysql - 我怎样才能有效地处理百万条记录

转载 作者:行者123 更新时间:2023-11-30 01:16:05 25 4
gpt4 key购买 nike

我遇到性能问题,在使用选择查询处理十亿条记录时,我有一个表

CREATE TABLE `temp_content_closure2` (
`parent_label` varchar(2000) DEFAULT NULL,
`parent_code_id` bigint(20) NOT NULL,
`parent_depth` bigint(20) NOT NULL DEFAULT '0',
`content_id` bigint(20) unsigned NOT NULL DEFAULT '0',
KEY `code_content` (`parent_code_id`,`content_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
/*!50100 PARTITION BY KEY (parent_depth)
PARTITIONS 20 */ |

我使用了分区,它可以通过分割表来提高性能,但对我来说没有用,我的示例在此表中选择

+----------------+----------------+--------------+------------+
| parent_label | parent_code_id | parent_depth | content_id |
+----------------+----------------+--------------+------------+
| Taxonomy | 20000 | 0 | 447 |
| Taxonomy | 20000 | 0 | 2286 |
| Taxonomy | 20000 | 0 | 3422 |
| Taxonomy | 20000 | 0 | 5916 |
+----------------+----------------+--------------+------------+

这里的content_id相对于parent_dept来说是唯一的,所以我使用parent_depth作为分区的键。在每个深度我有2577833行要处理,所以这里分区没有用,我从网站上得到了一个想法可以使用归档存储引擎,但它将使用全表扫描,而不是在 select 中使用索引,基本上 99% 我在这个表中使用 select 查询,并且这个表的计数每天都会增加。目前我在 mysql 数据库中,该数据库有 5.0.1版本。我知道要使用nosql数据库,但是有什么方法可以在mysql中处理,如果你建议nosql意味着我可以使用cassandra还是accumulo?

最佳答案

添加这样的索引:

ALTER TABLE 表 ADD INDEX content_id ('content_id')

如果您有更具体的 SELECT 条件,您还可以添加多个索引,这也会加快速度。

Multiple and single indexes

总体而言,如果您有一个像这样增长如此之快的表,那么您可能应该考虑重构您的 SQL 设计。

另请查看“大数据”解决方案。

关于mysql - 我怎样才能有效地处理百万条记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19043112/

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