Hatena::ブログ(Diary)

FAT47の底辺インフラ議事録

2011-10-04

MySQLの勉強メモ:クライアントプログラム、キャラクタセット、テーブルメンテナンス

セクション 3: DBA 作業のクライアント・プログラム

管理者用クライアントの概要

mysql

mysqladmin

mysqlimport

mysqldump

クライアント・プログラムの制限

mysql

mysqlは単純なSQLシェルです。

mysql -uユーザ名 -p [DB名]で利用することができます。

mysqladmin

mysqladminは管理オペレーションを実行するためのコマンドです。サーバコンフィグや現在のステータスのチェック、データベース作成、削除などに利用できます。

mysqladmin [options] command [command-arg] [command [command-arg

で利用できます。

mysqladminは以下のようなコマンドをサポートしています。

コマンド説明
create DB名DB作成
drop DB名DB削除
extended-statusサーバステータス変数とその値を表示します
flush-hostsホストキャッシュ内の情報を全てフラッシュします
flush-logsログを全てフラッシュします
flush-privilegesグラントテーブルを再ロードします
flush-threadsスレッドキャッシュをフラッシュします
versionバージョン情報を表示します

mysqlimport

LOAD_DATA_INFILE SQLステートメントにコマンドラインインターフェースを提供しています。

mysqlimport [options] db_name textfile1 [textfile2 ...]

で利用します。

mysqldump

データベースのダンプに利用します。sql文での出力の他にもCSVや区切り文字のテキスト出力、XMLフォーマットの出力も可能です。

mysqldump [options] db_name [tables]

mysqldump [options] --all-databases


オプション説明
--default-character-set=charset_nameデフォルトキャラクタセットの指定。指定されていない場合utf8になります
--master-data[=value]出力にバイナリログファイル名とポジションを書き出します。1を指定した場合、CHANGE MASTERが出力されます。2の場合はSQLコメントとして値が書かれています。
--add-drop-tableDROP TABLEステートメントをCREATE TABLEステートメントの前に追加します。
--extended-insert複数行のINSERT構文を使用して、ダンプファイルサイズを小さくします。挿入時のスピードがあがります。

セクション 4:

キャラクタ・セットのサポート

パフォーマンス問題

文字カラム用のデータ型の選択

キャラクタセット

キャラクタセットとは、バイナリエンコーディングから定義済みの一連の記号へのマッピングです。特定のアルファベットをビットで表す方法といえます。

パフォーマンス問題

文字セットによっては、より多くCPUやメモリを消費したりインデックスを無効にしたりすることがあります。

サーバがソートにインデックスを使用できるのは、クエリが指定したものと同じ照合順序によってソートされる場合に限られます。

結果セットを別の照合順序で並べ替えたい場合は、ファイルソートが実行されるので遅くなります。

文字カラム用のデータ型の選択

主な文字列型はVARCHARとCHARです。

VARCHAR

可変長の文字列を格納する文字列データ型です。必要な記憶域しか使用しないため固定長の型ほど多くの記憶域を必要としません。

列の最大長が255バイト以下である場合は1バイトを使用して、それよりも大きい場合は2バイトを使用します。つまりVARCHAR(1000)は長さの情報を格納するために2バイト使用するので、最大1002バイト使用します。

CHAR

固定長の文字列データ型です。CHARは非常に短い文字列を格納する場合や、すべての値がほぼ同じ長さである場合に役に立ちます。


セクション 7: データ (テーブル) のメンテナンス

テーブルの各種メンテナンス操作

テーブルのメンテナンスに使用するSQL文

CHECK TABLE

テーブルとインデックスのエラーを検査します。

REPAIR TABLE

破損したテーブルを修復します。InnoDBの場合は、何もしないALTER文を利用します。

InnoDB テーブルの修復

REPAIR TABLEはInnoDBは利用できません。

ALTER TABLE tbl_1 ENGINE=INNODB;

MyISAM の自動回復の有効化

mysqldに以下のオプションを与えます。

--myisam-recover=モード

オプションは、DEFAULT、BACKUP、FORCE、QUICK の任意の組み合わせで利用します。

mysqld はテーブルを開く一方でMyISAM テーブルを開き、テーブルにクラッシュのマークが付いていないか、つまりテーブルを正しく閉じているかどうかをチェックします。テーブルにクラッシュマークが付いていた場合、mysqld はテーブルをチェックし、テーブルが破損していた場合はmysqld で修復を試みます。

オプション説明
DEFAULT--myisam-recoverでどのオプションも指定しないのと同じです。
BACKUP修復時にデータテーブルを変更する場合、tbl_name.MYD データファイルのバックアップをtbl_name-datetime.BAKとして保存します。
FORCE.MYD ファイルから複数のレコードがなくなる場合でも修復を実行します。
QUICK削除ブロックがない場合、テーブル内のレコードをチェックしない。

ANALYZE TABLE

インデックス統計情報の更新を行います。InnoDBでは自発的に統計情報の更新が行われているので必要ありません。

OPTIMIZE TABLE

フラグメンテーションの解消や、テーブルスキャンの高速化のメリットがあります。

InnoDBで利用した場合は自動的に上記で照会したALTER TABLE文が実行されます。


テーブルのメンテナンスに使用するクライアントおよびユーティリティ・プログラム

mysqlcheck

テーブルのチェック、修復、最適化、分析を行います。myisamchkと似ていますが、mysqlcheckはサーバが動作中にしか利用できません。逆にmyisamchkはサーバがオフライン時にしか利用できません。

SQLステートメントCHECK TABLE、REPAIR TABLE、ANALYZE TABLE、OPTIMIZE TABLEが実行されます。

つまりMyISAMの場合は4つとも対応しているので実行されます。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/fat47/20111004/1317705450
リンク元