【问题标题】:Questions about improving the performance of Mysql concurrent insert and read data关于提高Mysql并发插入和读取数据性能的问题
【发布时间】:2012-07-12 16:43:44
【问题描述】:

基本信息: 我的 Mysql 数据库使用 TokuDB、InnoDB、MyIsam 表。

服务器信息: 16 核,64GB RAM,CentOS 6.2,MySQL v 5.5

过程: 1. 将大量数据从一个文本文件导入到一张 TokuDB 表中。 2. 通过加入不同的表来选择数据。

进程1和进程2同时运行时,整体运行速度会慢很多。

有人知道具体原因吗?

有什么改进的建议吗?

【问题讨论】:

  • 可能在两个不同的地方碰到磁盘...
  • 我同意。无论 HDD 的速度和“低”延迟如何,在双进程中,它都需要不断地在磁盘的一部分和另一部分之间切换读取。如果这种导入和加入选择的过程经常发生,您可能需要考虑为您的 SQL 服务器添加一个专用的 SSD 驱动器。由于没有磁盘和读写头,延迟几乎为零。
  • 你能提供更多关于你的实验的细节吗?了解您的架构、加载数据的方式、选择查询的外观等会很有帮助。
  • 嗨,这不是我自己做的测试项目。该模式是关于人类基因组测序数据的,这里很难描述。我们有一种管道可以在一个磁盘位置不断生成大量数据(txt 文件),然后将生成的数据加载到我们的数据库中。同时,我们有分析工具需要从同一个数据库中获取数据(只是一些简单的连接 sql 查询)。问题是如果同时加载和检索数据,会大大降低插入速度...

标签: mysql tokudb


【解决方案1】:

将 IO 分离到不同的磁盘/阵列。将所有 IO 放在单个分区/阵列上会导致糟糕的性能。如果可能,请购买专用驱动器阵列,例如 IBM 的 DS3524 或 HP Smart Array。通过光纤通道(或更好的 SAS2)连接数据库服务器将为您带来令人难以置信的性能提升。几年前,我停止将大量磁盘放入服务器本身。我在驱动器阵列上使用 MySQL 的性能是服务器中磁盘的 5 倍。

【讨论】:

    【解决方案2】:

    在 tokudb 中,在导入空表时加载数据文件的速度要快得多(尤其是当您有非增量主键或唯一索引时)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-07-08
      • 2012-07-16
      • 2011-12-07
      • 1970-01-01
      • 2021-06-14
      • 2021-10-11
      • 2023-03-08
      相关资源
      最近更新 更多