[KEK Online Group] -> [Nakayoshi's Page] ->
[SQL Test]->[SQL Test(2)]
MySQL の Stability と Performance のテスト(2)
- ハードウエア
- Server PC(Pentium II 300MHz, 196MB, DECchip 21140)
- Client PC(Pentium II 350MHz, 126MB, Intel Corp. 82557/8/9)
- ソフトウエア
- MySQL4.0.12
- Client Programs(C)
- データベース
- 11 Columns x 100, 200, ..., 1000
- table format
name char(32), item1 int, ..., item10 int
-
前回のテストでは、SELECT 文によるデータ読込みと UPDATE 文によるデータ書きこみ
速度に約 200倍の差がみられた。SELECT 文によるデータ読込みは
"select * from test_table100" のように 1 query で全データを読み込んでいた。
一方、UPDATE の場合は、テーブル 1行につき1 query を発行してデータの書きこみを
行っていた。そのため得られた結果が何に起因するのか特定することができなかった。
今回、SELECT に関しても UPDATE と同様にテーブルの 1 行につき 1 query を
発行して転送時間を測定した。
使用したテーブルは、前回と同じフォーマットで行が 100 - 1000 までの計10
テーブル。
- 全データを一定の時間間隔(1秒おき)で読む/書く。
全データを一定の時間間隔(1秒おき)で読み/書きに要した時間
Name |
Row |
Read time(ms) |
Write time(ms) |
test_table100 |
100 |
137.4 |
116.0 |
test_table200 |
200 |
319.3 |
281.6 |
test_table300 |
300 |
583.7 |
513.5 |
test_table400 |
400 |
867.3 |
787.9 |
test_table500 |
500 |
1256.0 |
1152.0 |
test_table600 |
600 |
1676.0 |
1516.0 |
test_table700 |
700 |
2009.0 |
2144.0 |
test_table800 |
800 |
2670.0 |
2531.0 |
test_table900 |
900 |
3331.0 |
3123.0 |
test_table1000 |
1000 |
3969.0 |
3678.0 |
×: Read Row by Row
■: Write Row by Row
○: Read all Rows at once
- EPICSの最新版 R3.14.5 に SQL interface を実装した
- 非同期I/O は未実装。これから作業を行う。
- EPICS DB の書き方は、まだ決めていない。以下は一例。
record(ai, "$(user):aiMG01")
{
field(DESC, "Analog input SQL")
field(SCAN,"2 second")
field(DTYP,"SQL")
field(INP,"@select lastval from mgtable1 where mgname='mg01'")
field(EGUF, "10")
field(EGU, "Counts")
field(HOPR, "1000")
field(LOPR, "0")
field(HIHI, "800")
field(HIGH, "600")
field(LOW, "4")
field(LOLO, "2")
field(HHSV, "MAJOR")
field(HSV, "MINOR")
field(LSV, "MINOR")
field(LLSV, "MAJOR")
}
- SQL Client を複数台にしてみる。
- SQL Server の負荷を測定する。
Copyright © 1999 - 2004 "Kazuo NAKAYOSHI" <kazuo.nakayoshi@kek.jp>
Last Modified: APR. 14, 2004