【问题标题】:Is it beneficial to split huge MySQL database into several databases to increase performance?将庞大的 MySQL 数据库拆分为多个数据库以提高性能是否有益?
【发布时间】:2010-01-15 13:13:06
【问题描述】:

有一个庞大的 MySQL 数据库,其中包含数百 GB 的数据。它会遇到性能问题。表的垂直和水平分区是提高性能的可能途径。

您认为将此数据库拆分为多个数据库是否也有利于提高性能?

项目基于 Rails

【问题讨论】:

  • 有些表格的使用方式不同吗?即,有些表主要是读取的,甚至是只读的,而其他表的写入频率更高?如果这样拆分它们可能会允许更专业的缓存策略和不同的连接池?

标签: mysql ruby-on-rails performance


【解决方案1】:

对于 InnoDB 存储类型,您可以指定将每个表存储在单独的文件中

http://www.electrictoolbox.com/mysql-innodb-one-file-per-table/

这将帮助您的文件系统为您的表制定缓存策略。

【讨论】:

    【解决方案2】:

    “它遇到性能问题”是一种症状,而不是根源。是时候进行一些数据库分析并找出瓶颈了。找到运行时间最长的查询(它们是在一张表上查询,还是在十二张表上查询,是否更新等等),然后看看你需要做什么。 您对数据库有多少控制权?当然,这也将决定你能做什么和不能做什么。

    如果某些数据子集被更频繁地访问,也许您可​​以将其集中在影子表中 - 访问速度更快的较小表。

    你可以索引更多/更少/其他的东西。

    有很多选择!但真正的问题是什么? :)

    【讨论】:

      【解决方案3】:

      您可能想查看一下您的存储类型。根据您的数据库使用情况,您可能希望切换到另一个存储引擎。 http://dev.mysql.com/doc/refman/5.1/en/storage-engines.html

      您也可以考虑使用 memcached 从内存中提供数据。 mysql 文档也有很好的解释:http://dev.mysql.com/doc/refman/5.0/en/ha-memcached.html

      【讨论】:

      • 祝你好运,为数百 GB 的内存提供服务 >.>
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-08
      • 2013-10-31
      • 1970-01-01
      • 1970-01-01
      • 2018-07-30
      • 1970-01-01
      • 2014-04-13
      相关资源
      最近更新 更多