2005-08-12

MySQLの実験(2) - サーバ情報の取得

前の「システム変数の参照と変更」では SHOW VARIABLES を使ってシステム変数を参照しましたが、SHOW文にはこれ以外にもサーバに関するいろいろな情報を提供する形式があります。以下では、トランザクションに関係するストレージエンジン(テーブルタイプ)や文字セット関連のサーバ情報を取得してみます。

尚、SHOW文については以下を参照して下さい。

http://dev.mysql.com/doc/mysql/en/show.html

ストレージエンジンに関する情報

ブラウザから http://localhost/mysql/sqlfile.cgi?svinfo1.sql を実行します。

svinfo1.sql

SHOW ENGINES;

実行結果

perl-exp11.gif

SHOW ENGINES はストレージエンジンに関する情報を表示します。この表示から、InnoDBがデフォルトのストレージエンジンである事が分かります。デフォルトのストレージエンジンは、CREATE TABLEで使用されるデフォルトのテーブルタイプです。本編では、サーバオプションファイル(my.ini)のmysqldセクション中でデフォルトのストレージエンジンを指定しています。

default-storage-engine=InnoDB

実行時にデフォルトのストレージエンジンを変更するには、システム変数storage_engine を変えます。

set storage_engine=MyISAM;

MySQLはマルチストレージエンジンに対応しています。同じデータベースの中に異なったストレージエンジンのテーブルを作成する事ができます。デフォルトのストレージエンジン以外でテーブルを作成するには、CREATE TABLE文のオプション(ENGINEまたはTYPE)で指定します。

CREATE TABLE syain( ・・・ ) ENGINE = MyISAM;


上例は、WindowsNT/2000/XP用の標準MySQLサーバ(mysqld-nt.exe)が稼動している場合の表示です。拡張MySQLサーバ(mysqld-max-nt.exe)が稼動している場合は、DBD(またはBERKELEYDB)もサポートYESになります

文字セットに関する情報

ブラウザから http://localhost/mysql/sqlfile.cgi?svinfo2.sql を実行します。

svinfo2.sql

SHOW CHARACTER SET;

実行結果

perl-exp12.gif

SHOW CHARACTER SET は全ての利用可能な文字セットを表示します。Charsetカラムは文字セット名です。漢字コードを指定するのに特に興味有る文字セット名はutf8/ujis/sjisです。

Default collationカラムはデフォルトの照合順序名です。照合順序(collation)とは文字を比較する場合の順序付け規則の事です。各文字セットにはデフォルトの照合順序があります。

Maxlenカラムは1文字を格納するに要する最大のバイト数を表しています。

データベースに関する情報

ブラウザから http://localhost/mysql/sqlfile.cgi?svinfo3.sql を実行します。

svinfo3.sql

SHOW CREATE DATABASE test;
SHOW CREATE DATABASE test_sjis;

実行結果

perl-exp13.gif

SHOW CREATE DATABASE はデータベースの作成情報を表示します。上の表示から、データベースtestの文字セットはutf8で、test_sjisの方はsjisという事が分かります。本例では、test_sjisは以下のSQL文で作成しました。

CREATE DATABASE test_sjis DEFAULT CHARACTER SET sjis;

テーブルに関する情報

ブラウザから http://localhost/mysql/sqlfile.cgi?svinfo4a.sql を実行します。

svinfo4a.sql

USE test;
SET storage_engine = MyISAM;       #この設定は有効です
SET character_set_database = sjis; #この設定は無意味です

DROP TABLE IF EXISTS syain;
CREATE TABLE syain (
  syain_no int(10) NOT NULL,
  syain_name varchar(50),
  bumon_no int(10),
  PRIMARY KEY (syain_no)
);
SHOW CREATE TABLE syain;

実行結果

perl-exp14a.gif

SHOW CREATE TABLE はテーブルの作成情報を表示します。この例題での興味ある情報はテーブル作成時のオプション(ENGINとDEFAULT CHARSET)です。

システム変数storage_engineをMyISAMに変更しているのでsyainテーブルはMyISAMで作成されています。storage_engineを変更しなければInnoDBで作成されます。ストレージエンジンの変更は CREATE TABLE のオプションで指定する事もできます。

CREATE TABLE syain( ・・・ ) ENGINE = MyISAM;

この例では、システム変数character_set_database をsjisに変更していますが、この設定は無意味です。テーブル作成時のデフォルトの文字セットは、データベース(test)の文字セットが使用されます。変更するにはCREATE TABLEのオプションで明示的に指定する必要があります。

CREATE TABLE syain( ・・・ ) DEFAULT CHARACTER SET  = sjis;


以下は、sjisを文字セットに利用しているデータベース(test_sjis)を使った実行例です。

ブラウザからhttp://localhost/mysql/sqlfile.cgi?svinfo4a.sql を実行します。

svinfo4b.sql

USE test_sjis;

DROP TABLE IF EXISTS syain;
CREATE TABLE syain (
  syain_no int(10) NOT NULL,
  syain_name varchar(50),
  bumon_no int(10),
  PRIMARY KEY (syain_no)
);
SHOW CREATE TABLE syain;

実行結果

perl-exp14b.gif

テーブル作成時のオプション(ENGINとDEFAULT CHARSET)は、ストレージエンジンがInnoDB、文字セットがsjisになり、全てデフォルト値が有効になっています。



最終更新のRSS Last-modified: Fri, 12 Aug 2005 17:49:17 JST (4422d)