質問: 高度なmysqlの機能の使い方を教えてください。 sqliteやmysqlを使い掲示板を何個か作りました。 基本コマンドからテーブルロックくらいまでで掲示板は作れたので、 mysqlの他の機能に意識しませんでしたが、下に書いた制約からレプリケーションまで機能が どのよな場面で使うのか知りたくなりました。 どのようなところで使うのか知りたいと思っています。 どなたかご存知でしたらどのような場面で使うのか簡単でいいので教えてもらえませんか? よろしくお願いします。 制約 整合性制約定義 ~ レプリケーション 質問項目) 必須なもの 頻繁に使うもの どういう場面で使うのか? プロジェクトの規模 大~小規模 何万行のデーター量か? データーベースの数テーブルの数 項目を参考にしたサイト ttp://kozy.heteml.jp/pukiwiki/index.php?frontpage#o2834729 基本コマンド コマンドラインツール データ型 テーブル作成 select insert update/delete トランザクション テーブル 表結合(join)、単純結合、等価結合 テーブルロック 制約 整合性制約定義 テーブル 再帰結合 インデックス ストアドプロシージャ ストアドファンクション トリガ 外部キー ユーザ変数 フォルダ構造 設定ファイル ログファイル ユーザー管理 バックアップ レプリケーション
回答: 質問範囲が広すぎて答えきれません。 「mysql全機能バイブル 現場で役立つa to z リファレンスマニュアルの完全版(技術評論社)」 あたりを買って調べて下さい(確か、5.1対応だったと思います) 概略まで > 制約 整合性制約定義 > 外部キー ・uinique制約 指定して列について重複値を許さない(ただしnullは重複可 ・check制約 列の値について制限する。mysqlでは実装されていない ・参照整合性制約、外部キー 商品マスタにない商品コードの注文テーブルへの挿入をエラーにしたりする ・再帰結合 普通は自己結合と呼ぶ。同じテーブル同士で結合する。 http://www.dbonline.jp/mysql/select/index17.html あたりを参考に ・インデックス 索引。ある項目について高速にアクセス出来る構造をつくり(通常b-tree、b*tree)、whereでの検索の際の高速化を行う。 ・ストアドプロシージャ サーバー側に一定の手続きを登録しておいて呼び出す機能。ネットワークトラフィックの削減が出来る。 ・ストアドファンクション dbmsの手続き言語機能を用いて作成しておいた関数。導出項目(年月日から年度を算出)などする際に便利。 ・トリガ あるテーブルに更新がされた場合に連動して、手続きを実行する機能。ログテーブルに出力するとか、自動的にマスタを更新するとか。ただし、多用すると内部処理を追い切れずイタイ目にあう可能性が高い。 ・ユーザ変数 mysqlでは「set @no=1」などとユーザ変数が宣言できる。 http://blog.kimuradb.com/?eid=681082 みたいな使い方が出来る。 ・設定ファイル mysqlの環境などを規定しているファイル。unix/linux系では「/etc/my.cnf」,windowsでは「%windir%\my.in」かmysqlのインストールディレクトリの「my.ini」。デフォルトの文字コードやデータバッファのサイズを指定していたりする。 ・ログファイル データベースを更新する際、パフォーマンス上即時にデータベースを更新しない。まず更新ログを出力する。ここらあたりはdbmsの細かい動作に関わるので、自分で調べて下さい。 ・ユーザー 「create user ユーザ名 identified by 'password'」で新規ユーザーを作成可能。 または「grant」文でも作成できる。 基本はアプリケーションからアクセスする際のユーザーには、必要最低限の権限のみ与える事。 ・バックアップ オフラインバックならmysqldumpで可能。 ・レプリケーション mysqlでは更新対象のデータベースをマスタにして、その更新結果をスレーブに反映することが可能。これで、参照のみのリクエストについてはスレーブを活用することで負荷分散が図れる。