mysql:4566
From: "cecil syskai" <"cecil syskai" <syskai_1@xxxxxxxxxx>>
Date: Fri, 26 Oct 2001 13:04:23 +0900
Subject: [mysql 04566] RAID機能について(テスト結果)
cecil syskai" <syskai_1@xxxxxxxxxx> 株セシール システム開発室 です。 須藤 様 fujiyama 様 志村@つみきソフトウェア 様 とみた 様 鵜飼@富士通研究所 様 fujiyama 様 ありがとうございました。 <<< Mysql の raid 機能についてのテスト結果>>> +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 目的: 10~20GBのテーブルを作成する必要があり、linux の2GBの壁を越えるため、RAID機能をテスト。 OS: Redhat7.1 linux マシーン: IBM netfinity 7100 ハード RAID 5 メモリ 3GB 容量 約 170GB Mysql:3-23-43 結論と結果: +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ①Redhat7.1 (linux カーネル 2.4 ファイルシステム ext2) においては、2GBの壁はなく、単一ファイル( repl_tbl.MYD) で2GBを越えるテーブル作成ができる。 (LFS ? 日経Linux10月) テーブル (repl_tbl) を作り、その際 max_rows に 60000000 を指定。244バイト の レコードを 34999999 件書き込みを行った。( sql:insert) その結果、 8539999756 バイトのテーブルを作成 | repl_tbl | MyISAM | Dynamic | 34999999 | 244 | 8539999756 | 28 1474976710655 | 358131712 | 0 | NULL | 2001-10-26 08:46:13 | 2001-10-26 11:42:37 | NULL | max_rows=60000000 [ repldb]# ls -l 合計 30921204 drwx------ 2 mysql mysql 4096 10月 25 08:42 00 drwx------ 2 mysql mysql 4096 10月 25 08:42 01 drwx------ 2 mysql mysql 4096 10月 25 08:42 02 drwx------ 2 mysql mysql 4096 10月 25 08:42 03 drwx------ 2 mysql mysql 4096 10月 25 08:42 04 drwx------ 2 mysql mysql 4096 10月 25 08:42 05 drwx------ 2 mysql mysql 4096 10月 25 08:42 06 drwx------ 2 mysql mysql 4096 10月 25 08:42 07 drwx------ 2 mysql mysql 4096 10月 25 08:42 08 drwx------ 2 mysql mysql 4096 10月 25 08:42 09 -rw-rw-rw- 1 mysql mysql 21768888655 10月 25 18:07 repl_out.txt -rw-rw---- 1 mysql mysql 8539999756 10月 26 11:42 repl_tbl.MYD -rw-rw---- 1 mysql mysql 358131712 10月 26 11:42 repl_tbl.MYI -rw-rw---- 1 mysql mysql 8590 10月 26 08:46 repl_tbl.frm -rw-rw---- 1 mysql mysql 965206016 10月 25 20:14 repl_tbl2.MYI -rw-rw---- 1 mysql mysql 8590 10月 25 08:42 repl_tbl2.frm | | +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ② mysql の RAID 機能は十分使用できると思われる。 10分割(ストライピング)されたテーブルを作り、その際 max_rows に 60000000 を指定。244バイトのレコードを約9000万件書き込 みを行った。( sql:insert) 1分割ファイルごと約2.196GBのファイル( repl_tbl2.MYD) が でき、トータル 21959999756 バイトのテーブルとなった。 ( max_rows=60000000 と指定しても、6000万件で書き込み中止と はならなかった) mysql> show table status; | Name | Type | Row_format | Rows | Avg_row_length | Data_length | Ma x_data_length | Index_length | Data_free | Auto_increment | Create_time | Update_time | Check_time | Create_options | Comment | | repl_tbl2 | MyISAM | Dynamic | 89999999 | 244 | 21959999756 | 28 1474976710655 | 965206016 | 0 | NULL | 2001-10-25 18:13:53 | 2001-10-25 20:14:41 | NULL | max_rows=60000000 raid_type=striped raid_ch unks=10 raid_chunksize=10 | | Max_data_length=281474976710655 281GB?? このテーブルに ・簡単な select 操作 ・テキストに吐き出し、戻す操作 ・簡単な select 操作 を行ったが、特に問題はなかった。 ============================= | repl_tbl2 | MyISAM | Dynamic | 89999999 | 244 | 21959999756 | 28 1474976710655 | 965206016 | 0 | NULL | 2001-10-25 08:42:47 | 2001-10-25 14:41:29 | NULL | max_rows=60000000 raid_type=striped raid_ch unks=10 raid_chunksize=10 | | mysql> select count(*) from repl_tbl2; +----------+ | count(*) | +----------+ | 89999999 | +----------+ # cd /s01/repldb/00 # ls -l -rw-rw---- 1 mysql mysql 2196008960 10月 25 14:41 repl_tbl2.MYD # cd ..;cd 01;ls -l -rw-rw---- 1 mysql mysql 2196001036 10月 25 14:41 repl_tbl2.MYD # cd ..;cd 02;ls -l -rw-rw---- 1 mysql mysql 2195998720 10月 25 14:41 repl_tbl2.MYD # cd ..;cd 03;ls -l -rw-rw---- 1 mysql mysql 2195998720 10月 25 14:41 repl_tbl2.MYD # cd ..;cd 04;ls -l -rw-rw---- 1 mysql mysql 2195998720 10月 25 14:41 repl_tbl2.MYD # cd ..;cd 05;ls -l -rw-rw---- 1 mysql mysql 2195998720 10月 25 14:41 repl_tbl2.MYD # cd ..;cd 06;ls -l -rw-rw---- 1 mysql mysql 2195998720 10月 25 14:41 repl_tbl2.MYD # cd ..;cd 07;ls -l -rw-rw---- 1 mysql mysql 2195998720 10月 25 14:41 repl_tbl2.MYD # cd ..;cd 08;ls -l -rw-rw---- 1 mysql mysql 2195998720 10月 25 14:41 repl_tbl2.MYD # cd ..;cd 09;ls -l -rw-rw---- 1 mysql mysql 2195998720 10月 25 14:41 repl_tbl2.MYD mysql> select * into outfile 'repl_out.txt' from repl_tbl2; Query OK, 89999999 rows affected (1 hour 41 min 3.08 sec) drwx------ 2 mysql mysql 4096 10月 25 08:42 00 drwx------ 2 mysql mysql 4096 10月 25 08:42 01 drwx------ 2 mysql mysql 4096 10月 25 08:42 02 drwx------ 2 mysql mysql 4096 10月 25 08:42 03 drwx------ 2 mysql mysql 4096 10月 25 08:42 04 drwx------ 2 mysql mysql 4096 10月 25 08:42 05 drwx------ 2 mysql mysql 4096 10月 25 08:42 06 drwx------ 2 mysql mysql 4096 10月 25 08:42 07 drwx------ 2 mysql mysql 4096 10月 25 08:42 08 drwx------ 2 mysql mysql 4096 10月 25 08:42 09 <<テキスト約21.7GB>> -rw-rw-rw- 1 mysql mysql 21768888655 10月 25 18:07 repl_out.txt -rw-rw---- 1 mysql mysql 965206016 10月 25 14:41 repl_tbl2.MYI -rw-rw---- 1 mysql mysql 8590 10月 25 08:42 repl_tbl2.frm # df Filesystem 1k-blocks Used Available Use% Mounted on /dev/sda1 8064400 1677312 5977440 22% / /dev/sda5 164864672 48029636 108460392 31% /s01 # head repl_out.txt 1 MMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBbbMMMMMMMMMMMMMMMMMMMMMMMMM MMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMmmmmmmmmmmmmmmmmmmmmmmmmmMM MMMM # tail repl_out.txt 89999999 MMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBbbMMMMMMMMMMMMMMMMM MMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMmmmmmmmmmmmmmmmmmmm mmmm mmMMMMMM ============================= mysql> delete from repl_tbl2; <<レコード削除>> Query OK, 0 rows affected (33.66 sec) # ls -l 合計 21279528 drwx------ 2 mysql mysql 4096 10月 25 08:42 00 drwx------ 2 mysql mysql 4096 10月 25 08:42 01 drwx------ 2 mysql mysql 4096 10月 25 08:42 02 drwx------ 2 mysql mysql 4096 10月 25 08:42 03 drwx------ 2 mysql mysql 4096 10月 25 08:42 04 drwx------ 2 mysql mysql 4096 10月 25 08:42 05 drwx------ 2 mysql mysql 4096 10月 25 08:42 06 drwx------ 2 mysql mysql 4096 10月 25 08:42 07 drwx------ 2 mysql mysql 4096 10月 25 08:42 08 drwx------ 2 mysql mysql 4096 10月 25 08:42 09 -rw-rw-rw- 1 mysql mysql 21768888655 10月 25 18:07 repl_out.txt -rw-rw---- 1 mysql mysql 0 10月 25 18:13 repl_tbl2.MYI -rw-rw---- 1 mysql mysql 8590 10月 25 08:42 repl_tbl2.frm [ 00]# ls -l 合計 0 -rw-rw---- 1 mysql mysql 0 10月 25 18:14 repl_tbl2.MYD [ 00]# cd ..;cd 01;ls -l 合計 0 -rw-rw---- 1 mysql mysql 0 10月 25 18:14 repl_tbl2.MYD [ 01]# cd ..;cd 02;ls -l 合計 0 -rw-rw---- 1 mysql mysql 0 10月 25 18:14 repl_tbl2.MYD [ 02]# cd ..;cd 09;ls -l 合計 0 -rw-rw---- 1 mysql mysql 0 10月 25 18:13 repl_tbl2.MYD [ 09]# df Filesystem 1k-blocks Used Available Use% Mounted on /dev/sda1 8064400 1677312 5977440 22% / /dev/sda5 164864672 25619592 130870436 17% /s01 ============================= mysql> load data infile 'repl_out.txt' replace into table repl_tbl2; Query OK, 89999999 rows affected (1 hour 57 min 34.07 sec) -rw-rw---- 1 mysql mysql 2196008960 10月 25 20:14 repl_tbl2.MYD [ 00]# cd ..;cd 01;ls -l -rw-rw---- 1 mysql mysql 2196001036 10月 25 20:14 repl_tbl2.MYD [ 01]# cd ..;cd 02;ls -l -rw-rw---- 1 mysql mysql 2195998720 10月 25 20:14 repl_tbl2.MYD [ 02]# cd ..;cd 03;ls -l -rw-rw---- 1 mysql mysql 2195998720 10月 25 20:14 repl_tbl2.MYD [ 08]# cd ..;cd 09;ls -l -rw-rw---- 1 mysql mysql 2195998720 10月 25 20:14 repl_tbl2.MYD | repl_tbl2 | MyISAM | Dynamic | 89999999 | 244 | 21959999756 | 28 1474976710655 | 965206016 | 0 | NULL | 2001-10-25 18:13:53 | 2001-10-25 20:14:41 | NULL | max_rows=60000000 raid_type=striped raid_ch unks=10 raid_chunksize=10 | | mysql> select * from repl_tbl2 where repl_key=89999999; | repl_key | repl_c | 89999999 | MMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBbbMMMMMMMMMMMMMMMMMMMM MMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMmmmmmmmmmmmmmmmmmmmmmm mmmM MMMMM | 1 row in set (0.00 sec) mysql> select * from repl_tbl2 where repl_key=90000000; Empty set (0.00 sec) mysql> select count(*) from repl_tbl2; +----------+ | count(*) | +----------+ | 89999999 | +----------+ 1 row in set (0.00 sec) +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ <<データ書き込みPG:PERLのPG>> #!/usr/bin/perl ######################################################### ### repl200 ######################################################### $|=1; use DBI; #use Getopt::Long; #@opt=GetOptions("no:s"); #$nno=$opt_no || die "$0 -no nno\n"; $dbname="repldb"; $hostname="localhost"; $data_s="DBI:mysql:$dbname:$hostname"; $uname="root"; $pwd=""; ############### main ########################################################### ####### ($gfsec1,$gfmin1,$gfhour1)=(localtime)[0,1,2]; #print "$gfhour1:$gfmin1:$gfsec1\n"; $dbh=DBI->connect($data_s, $uname, $pwd) || die "mysql repldb ERR"; $sss=$dbh->tables(); #print ":::rows=$DBI::rows\n"; #print "No=$nno $sss\n"; ##goto MMM; $cnt=$cnt2=0; for ($idx=1; $idx < 90000000;$idx++) { $cnt++; $cnt2++; ##print "idx=$idx\n"; if ($cnt2 > 99999) { print "No=$nno cnt=$cnt\n"; $cnt2=0; ($gfsec2,$gfmin2,$gfhour2)=(localtime)[0,1,2]; print "$gfhour1:$gfmin1:$gfsec1\n"; print "$gfhour2:$gfmin2:$gfsec2\n"; } ##$rr=int( rand(999999) ); $statement="insert into repl_tbl2 set repl_c=\'MMAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBB BBBB BBBBBBBBBBBBBBBBbbMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMM MMMMMMMMMMMMMMMMmmmmmmmmmmmmmmmmmmmmmmmmmMMMMMM\',repl_key=$idx"; $sth=$dbh->prepare($statement) or &print_error("エラーが発生しまし た。(p repare)"); $rv=$sth->execute or &print_error("エラーが発生しました。(SQL EXECUTE.select koza)"); ###$dbh->commit; ##sleep 10; } $sth->finish; MMM: $dbh->disconnect; ($gfsec2,$gfmin2,$gfhour2)=(localtime)[0,1,2]; print "$gfhour1:$gfmin1:$gfsec1\n"; print "$gfhour2:$gfmin2:$gfsec2\n"; exit; +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ << max_rows を指定しないときのエラーメッセージ>> No= cnt=17600000 13:6:46 15:12:5 DBD::mysql::st execute failed: The table 'RRR_tbl' is full at rrr200.pl line 45. Undefined subroutine &main::print_error called at rrr200.pl line 45.