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>]