gpt4 book ai didi

mysql - 海量数据的多语言MySQL数据库结构

转载 作者:行者123 更新时间:2023-11-29 00:43:08 25 4
gpt4 key购买 nike

我正在寻找有关可以处理大量数据的多语言 MySQL 数据库结构的建议。我们目前正在使用以下方法:

Articles  <- Article_translations -> Languages
id id id
date language_id (fk) locale
category article_id (fk)
content

好吧,假设我们有大约 100,000 篇文章和 5 种语言......好吧......你明白问题所在了。数据越大,数据库越慢(这里只是一个猜测,但绝对必要的复杂 JOIN 查询可能不会是 O(log(n)),而是 O(n^2) 之类的东西)。

我们目前的解决方案是将 Article_translations 拆分为 [locale]_article_translations(例如 en_us_article_translation),在这种情况下,我们需要轻松同步这些表之间的结构。这是解决此问题的合适方法还是有更好的方法?如果这是一个好的解决方案,是否有什么东西可以帮助监视更改(仅结构,没有数据同步!)并同步这些结构?

最佳答案

你只对了一半,数据越大数据库越慢,但如果数据库设计不好,即使是小数据也会很慢。

我不能告诉你什么是最好的方法或最好的解决方案,记住你需要做很多事情才能找到“最好的解决方案”。我只能向您推荐一些可以帮助您的工具和技巧。

首先,检查你的索引,索引类型,不仅是PK和FK,你还需要看你需要哪种类型的索引,即,你需要文本索引吗?或哈希树??。

还要检查你的引擎,MyISAM 还是 InnoDB?你说你分表,查this post关于拆分。

此外,如果您避免使用'%word%'之类的东西,您的查询也会更快。请记住,错误的查询会对响应时间产生巨大影响。

您可以使用 Show create table 或 Describe select ......explain 来查看发生了什么,或使用命令 benchmark 查看您正在应用以改进它的函数的大概时间

一些用于 MySQL 的工具我会推荐您看一下这个程序,它将帮助您提高这部分性能。

  • Mysqlslap(它类似于基准测试,但您可以自定义更多结果)。

  • SysBench(测试 CPU 性能、I/O 性能、互斥锁争用、内存速度、数据库性能)。

  • Mysqltuner(您可以使用它分析一般统计信息、存储引擎统计信息、性能指标)。

  • mk-query-profiler(执行 SQL 语句分析)。

  • mysqldumpslow(很高兴知道女巫查询会导致问题)。

关于mysql - 海量数据的多语言MySQL数据库结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11402085/

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