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

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.



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