MySQL性能的波动

时间:2012-09-19 08:52:16

标签: mysql database performance

我有一个包含不同表的MySQL(MyISAM)数据库。让我们以数据库“rh955_omf”为例,其中包含以下表格:

  • 信号(600 MBytes,17925条目)
  • 图片(5'355 MBytes,17925条目)
  • 速度(680 MBytes,4979个条目)

实际上我只是专注于信号表条目。因此,我想更好地描述这个表。它的创建如下:

CREATE TABLE rh955_omf.signal(MeasNr TINYINT UNSIGNED, ExperimentNr TINYINT UNSIGNED, Time INT, SequenceNr SMALLINT UNSIGNED, MeanBeatRate SMALLINT UNSIGNED, MedBeatRate SMALLINT UNSIGNED, MeanAmp1 MEDIUMINT UNSIGNED, MeanAmp2 MEDIUMINT UNSIGNED, StdDeviationAmp1 DOUBLE, StdDeviationAmp2 DOUBLE, MeanDeltaAmp MEDIUMINT UNSIGNED, Offset INT UNSIGNED, NrOfPeaks SMALLINT UNSIGNED, `Signal` MEDIUMBLOB, Peakcoord MEDIUMBLOB, Validity BOOL, Comment VARCHAR(255), PRIMARY KEY(MeasNr, ExperimentNr, SequenceNr));

我使用以下命令加载此表中的值:

SELECT MeanBeatRate FROM rh955_omf.signal WHERE MeasNr = 3 AND ExperimentNr = 10 AND SequenceNr BETWEEN 0 AND 407

如果我第一次加载整个“MeanBeatRate”行(int 16值),则需要大约54秒(MeasNr = 1..3,ExperimentNr = 1..24,SequenceNr> = min AND< ; = max)。如果我再次加载它,则需要0.5秒(缓存)。

所以我想要的是加快数据库的速度。因此,我创建了一些新数据库,但没有将所有表放入不同的数据库中:

  • rh955_copy_omf:信号表
  • rh955_p_copy_omf:信号表,图片表
  • rh955_v_p_copy_omf:信号表,图片表,速度表

我重新启动计算机并从不同的表中加载了所有“MeanBeatRate”值。这给了我以下时间:

  • rh955_omf:54s(如前所述)
  • rh955_copy_omf:3.1s
  • rh955_p_copy_omf:12.9s
  • rh955_v_p_copy_omf:10.7s

所以看起来加载数据的时间取决于数据库中的其他表。这是否可能(因为我只是在“信号”表中搜索)?更令人困惑的是:在表“rh955_v_p_copy_omf”中,我拥有原始表中的所有数据,但性能提高了约5倍。对这种行为的任何解释?我会感谢任何帮助,因为我真的陷入困境,需要提高数据库性能......

附加信息:在一种情况下,我使用命令“LOAD DATA INFILE'D:/ Exported MySQL / rh955 / signal.omf'INTO table rh955_omf.signal”将数据存储在表中。 (这是加载数据很慢的情况),在其他情况下我逐行存储数据。也许这就是性能不同的原因?如果是,那么从文件中存储数据的解决方法是什么?

1 个答案:

答案 0 :(得分:0)

它们的索引是否相同?

每个数据库的服务器参数是否相同(相同的内存,启动配置和参数等)?

它们是否在同一个磁盘上?

如果它们位于同一磁盘上,是否有其他同时运行的应用程序会影响读写磁头的位置?

您是每次都停止其他数据库还是有些数据库仍在运行?