[前][次][番号順一覧][スレッド一覧]

mysql:531

From: Tatsuya Ina <Tatsuya Ina <ina@xxxxxxxxxx>>
Date: Wed, 13 Jan 1999 14:48:05 GMT
Subject: [mysql 531] mMySQL speed


はじめまして。伊奈@セイコーエプソン といいます。
年が明けてからMLに参加させて頂いています。

実は、今MySQLを使って工場内のデータを検索できるシステムを作ろうとしていますが、
私のところで動いているMySQLの検索スピードが妥当なのかどうか、まだチューニングの
余地があるのかどうか、皆さんに意見をお聞きしたくて、投稿させて頂きました。

データベースは全くの初心者なので、根本的に間違っているかもしれません。
アドバイスなど頂けるよう、よろしくお願いします。

約500万件のデータベースをLinux上のMySQLで動かしています。
比較のため、となりのPCにEmpressというRDBMSを入れて同様のシステムを作ってみました。


テスト用データベース構成
-------------------------------------------------------------------------------
MySQLテーブル仕様:
create table Test_all_tab
(
     lotno	char(22) NOT NULL, 
     order_no  smallint  NOT NULL,
     param	char(16) NOT NULL,
     ope	char(12) NOT NULL,
     start_day  datetime NOT NULL,
     stop_day	datetime NOT NULL,
     pc_type    char(16) NOT NULL,
     pd         char(16) NOT NULL,
     kubun      char(16) NOT NULL,
     pc_no	smallint NOT NULL,
     good_wf	smallint NOT NULL,
     ng_wf	smallint NOT NULL,
     wfno	smallint NOT NULL,
     value	char(64) NOT NULL,
     index lotno_index (lotno),
     index stop_day_index (stop_day),
     unique param (lotno,order_no,param,ope));

OS: Slackware3.4ベース + Kernel 2.0.35)
ハードウェア構成: PentiumII(400) + 128M memory + URTRA SCSI 4G
MySQLはソースからコンパイル gcc version 2.7.2.3 + libc.so.5.4.38
MySQL 3.21.33b+linuxthreads-0.6
---------------------------------------------------------------------------------
Empressの場合
テーブル仕様:
create table Test_all_tab
(
     lotno	char(22) NOT NULL,
     order_no   int  NOT NULL,
     param	char(16) NOT NULL,
     ope	char(12) NOT NULL,
     start_day  time(9)  NOT NULL,
     stop_day	time(9)  NOT NULL,
     pc_type    char(16) NOT NULL,
     pd         char(16) NOT NULL,
     kubun      char(16) NOT NULL,
     pc_no	int NOT NULL,
     good_wf	int NOT NULL,
     ng_wf	int NOT NULL,
     wfno	int NOT NULL,
     value	char(64) NOT NULL
);

create index Test_all_lotno_index on Test_all_tab(lotno);
create index Test_all_stop_day_index on Test_all_tab(stop_day);
create unique index Test_all_key on Test_all_tab(lotno,order_no,param,ope);
grant select on Test_all_tab to public;

ハードウェア構成: PentiumII(266) + 64M memory + EIDE 4G
OS: Turbo Linux 2.0 + Kernel 2.0.35)
Empress Ver.6.10

-------------------------------------------------------------------------------

作成したデータは4847180件であり、MySQLの起動時のパラメータは
デフォルトのまま。データの取得時間が挿入されるstop_dayの範囲は
1998/08/26 00:00:00 〜 1998/12/29 23:59:59 です。

この構成で次の検索をしてみました。MySQLの場合はmysqlから行い、
Empressの場合には、mysqlと同様なempsqlというインターフェイスで行いました。

結果
(1)select count(*) from Test_all_tab where lotno like 'D15A0%'
この時、該当レコードは717505件あります。検索時間(3回の平均)は
 Empress:37.5 sec    MySQL:553.36 sec

(2)select count(*) from Test_all_tab where stop_day between '1998/11/14 00:00:00' \
   and '1998/12/14 23:59:59'
この時、該当レコードは1118730件あります。検索時間(3回の平均)は
 Empress:6.5 sec     MySQL:385.8 sec


上記検索は、テスト用のものではなく、構築するシステムで、実際にもっとも使う検索
を想定してのものなので、これではMySQLではシステムを構築することはできません。
ハードウェア的にはEmpressの方が劣るのに、この差は「驚異的」です。

いくらEmpressがいわゆる「商用」であるとは言え、オープンソースソフトウェアに
の力を信じている私としては、この結果に納得がいきません。
safe_mysqldの起動時のパラメータもkey-buffer=16m sort_buffer=16m record_buffer=16m
とかやってみましたが、10sec程度速くなる程度で、劇的に速くはなりませんでした。

MySQLの付属ドキュメントの中には、開発元では、「5000万件のテーブルも稼働している」
というようなことが書いてあったと思います。それをみて、「500万件程度ならば大丈夫」
だろうと、考えMySQLで作ってみました。PC-UNIXでは500万件程度も無理なのでしょうか?

よろしくお願いいたします。


伊奈竜也 ina@xxxxxxxxxx 
セイコーエプソン株式会社
半導体事業部 富士見事業所
IC製品技術部 F検査技術G
TEL 0266-61-1212
FAX 0266-61-1278 















[前][次][番号順一覧][スレッド一覧]

->     531 1999-01-13 23:48 [Tatsuya Ina <ina@xxx] mMySQL speed                            
       532 1999-01-13 15:31 ┣[民斗 <tommy@xxxxxxxx]                                       
       535 1999-01-14 01:34 ┃┣[Tatsuya Ina <ina@xxx]                                     
       538 1999-01-13 16:53 ┃┗[民斗 <tommy@xxxxxxxx]                                     
       534 1999-01-13 15:44 ┣[<takeshi@xxxxxxxxxx>]                                       
       541 1999-01-13 17:39 ┣[<takeshi@xxxxxxxxxx>]                                       
       546 1999-01-14 08:58 ┗[<takeshi@xxxxxxxxxx>]