MochiuWiki : SUSE, EC, PCB
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
ツール
リンク元
関連ページの更新状況
特別ページ
ページ情報
We ask for
Donations
検索
個人用ツール
ログイン
Toggle dark mode
名前空間
ページ
議論
表示
閲覧
ソースを閲覧
履歴を表示
MySQL - MySQL Workbenchのソースを表示
提供: MochiuWiki : SUSE, EC, PCB
←
MySQL - MySQL Workbench
あなたには「このページの編集」を行う権限がありません。理由は以下の通りです:
この操作は、次のグループのいずれかに属する利用者のみが実行できます:
管理者
、new-group。
このページのソースの閲覧やコピーができます。
== 概要 == MySQL Workbenchは、MySQLデータベースの管理、開発、設計を行うための統合ビジュアル開発環境である。<br> データベースアーキテクト、開発者、DBA (データベース管理者) 向けの包括的なツールで、ビジュアルなデータベース設計、SQLクエリ開発、サーバ管理、<br> パフォーマンスモニタリング、データベースマイグレーション等の機能を統合している。<br> <br> <center> {| class="wikitable" |+ MySQL Workbench 主要な機能領域 ! 機能領域 !! 主要機能 |- | SQL開発機能 || クエリエディタ、実行計画の可視化、スニペット管理 |- | データモデリング機能 || ER図設計、フォワード/リバースエンジニアリング |- | サーバ管理機能 || ユーザ管理、サーバログ、ステータス監視 |- | パフォーマンスモニタリング || Performance Dashboard、Performance Schema |- | データインポート/エクスポート || 各種形式でのデータ入出力 |- | マイグレーション || 他DBからMySQLへの移行支援 |} </center> <br> <center> {| class="wikitable" |+ MySQL Workbench エディション比較 ! エディション !! 提供方式 !! 主要機能 |- | Community Edition || オープンソースライセス || SQL開発、データモデリング、サーバ管理、基本的なパフォーマンスモニタリング、Migration Wizard |- | Commercial Edition || MySQL Enterprise契約に含まれる || Community Editionの全機能に加えて、データベースドキュメント自動生成、Enterprise Monitor連携、<br>MySQL Enterprise Backupツール連携、高度なパフォーマンス分析機能、優先サポート |} </center> <br> Windows、Linux (複数ディストリビューション)、MacOSに対応しており、各プラットフォームで一貫したユーザインターフェースを提供する。<br> 動作要件は、4[GB]以上のメモリ (推奨: 8[GB]以上)、1[GB]以上のディスク空き容量である。<br> <br> 接続方法は、TCP/IP接続、SSH経由の接続、SSL接続、ローカルソケット接続に対応している。<br> SSH経由の接続では、公開鍵認証とパスワード認証の両方をサポートする。<br> <br> SQL開発機能では、シンタックスハイライト、自動補完、複数タブ対応、コード整形、クエリ実行履歴、Visual Explain (実行計画の可視化) を提供する。<br> Visual Explainは、クエリの実行計画をグラフィカルなツリー構造で表示し、処理コスト、使用インデックス、スキャンタイプ、フィルタ条件を視覚的に確認できる。<br> <br> データモデリング機能では、EER図の設計、フォワードエンジニアリング (EER図からCREATE TABLE文の自動生成)、リバースエンジニアリング (既存DBからEER図の自動生成)、<br> モデルとDBの同期 (差分検出とALTER TABLE文の自動生成) を提供する。<br> <br><br> == エディション比較 == ==== Community Edition ==== 下表に、Community Editionの特徴を示す。<br> <br> <center> {| class="wikitable" |+ MySQL Workbench Community Edition 機能一覧 ! 機能 !! 説明 |- | オープンソースライセンスで提供される無料版 || GPL v2ライセンスで利用可能 |- | SQL開発機能 || クエリエディタ、Visual Explain、スニペット管理、結果パネル |- | データモデリング機能 || ER図設計、フォワード/リバースエンジニアリング、モデル同期 |- | サーバ管理機能 || ユーザ管理、サーバステータス監視、サーバログ表示 |- | パフォーマンスモニタリング || Performance Dashboard、Performance Reports、Performance Schema |- | データインポート/エクスポート || Data Import Wizard、Data Export Wizard、Result Set Export |- | Migration Wizard || 他DBからMySQLへの移行支援 |} </center> <br> Community Editionのダウンロードは、MySQL公式サイトから無料で入手可能である。<br> <br> ==== Commercial Edition ==== 下表に、Commercial Editionの特徴を示す。<br> <br> <center> {| class="wikitable" |+ MySQL Workbench Enterprise Edition 機能一覧 ! 機能 !! 説明 |- | MySQL Enterpriseの契約に含まれる有料版 || MySQL Enterprise Editionの購入が必要 |- | Community Editionの全ての機能 || 全ての基本機能を含む |- | データベースドキュメント自動生成機能 || データベース構造のドキュメントを自動生成 |- | MySQL Enterprise Monitor連携 || リアルタイム監視とアラート機能 |- | MySQL Enterprise Backupツール連携 || ホットバックアップとリストア機能 |- | 高度なパフォーマンス分析機能 || より詳細なパフォーマンス分析レポート |- | 優先サポート || Oracle社の技術サポート |} </center> <br> Commercial Editionは、ミッションクリティカルなシステムや大規模な本番環境での使用に適している。<br> <br> 下表に、主要機能の比較を示す。<br> <br> <center> {| class="wikitable" |+ エディション機能比較 ! 機能 !! Community Edition !! Commercial Edition |- | SQL開発機能 || ○ || ○ |- | データモデリング || ○ || ○ |- | サーバ管理 || ○ || ○ |- | Performance Dashboard || ○ || ○ |- | Migration Wizard || ○ || ○ |- | 自動ドキュメント生成 || × || ○ |- | Enterprise Monitor連携 || × || ○ |- | Enterprise Backup連携 || × || ○ |- | 優先サポート || × || ○ |- | ライセンス || GPL v2 (無料) || 有料 |} </center> <br> 多くの用途では、Community Editionで十分な機能を利用できる。<br> <br><br> == インストール == ==== RHEL ==== sudo rpm -ivh mysql-workbench-community-<バージョン>.el7.x86_64.rpm # または sudo dnf install mysql-workbench-community <br> ==== SUSE ==== sudo zypper install mysql-workbench-community <br> ==== Windows ==== # MySQL公式Webサイトにアクセスする。 #: https://dev.mysql.com/downloads/workbench/ # mysql-workbenchのMSIインストーラをダウンロードする。 #: プラットフォームでWindowsを選択する。 # ダウンロードしたMSIファイルを実行する。 #: mysql-workbench-community-VERSION-winx64.msi # インストールウィザードに従って進む。 # インストールタイプを選択する。 #: Typical (標準インストール) を推奨 # インストール完了後、スタートメニューからMySQL Workbenchを起動する。 <br> Windows環境では、追加要件として Microsoft .NET Framework 4.5.2以上が必要である。<br> 通常のWindows 10以降では、.NET Frameworkはプリインストールされている。<br> <br> ==== 動作要件 ==== 下表に、MySQL Workbenchの動作要件を示す。<br> <br> <center> {| class="wikitable" |+ 動作要件 ! 項目 !! 要件 |- | OS || Windows 10以上、Linux (複数ディストリビューション) |- | メモリ || 4[GB]以上 (推奨: 8[GB]以上) |- | ディスク || 1[GB]以上の空き容量 |- | ディスプレイ || 1280×1024以上の解像度 |- | Windows追加要件 || Microsoft .NET Framework 4.5.2以上 |} </center> <br> 大規模なデータモデルを扱う場合や、パフォーマンス分析機能を使用する場合は、8[GB]以上のメモリを推奨する。<br> <br> 対応MySQLバージョンは、MySQL 5.6、5.7、8.0、8.4である。<br> <br> <u>また、最新版のMySQL Workbenchは、古いバージョンのMySQLサーバにも接続可能である。</u><br> <u>ただし、一部の新機能 (例: Visual Explain、Performance Schema統計) は、対応するMySQLバージョンでのみ利用可能である。</u><br> <br><br> == 接続設定 == MySQL Workbenchでは、複数の接続方法をサポートしている。<br> 接続設定は、接続マネージャに保存され、再利用可能である。<br> <br> ==== 新規接続の作成 ==== 新規接続を作成する手順を以下に示す。<br> <br> # ホーム画面 または Databaseメニューから[MySQL Connections]の[+]ボタンを押下する。<br>または、[Database] - [Manage Connections]を選択する。 # [Setup New Connection]ダイアログが表示される。 # 接続設定を入力する。 # 主要な設定項目を入力する。 #: Connection Name、Hostname、Port、Username、Password # [Test Connection]ボタンを押下して、接続を確認する。 #: 設定が正しければ接続成功メッセージが表示される。 # [OK]ボタンを押下して、設定を保存する。 # 接続情報がホーム画面に表示される。 <br> 主要な設定項目を以下に示す。<br> <br> <center> {| class="wikitable" |+ 接続設定項目 ! 項目 !! 説明 !! デフォルト値 |- | Connection Name || 接続の表示名 || (任意) |- | Connection Method || 接続方法 || Standard (TCP/IP) |- | Hostname || MySQLサーバのホスト名またはIPアドレス || 127.0.0.1 |- | Port || MySQLサーバのポート番号 || 3306 |- | Username || 接続に使用するMySQLユーザ名 || root |- | Password || パスワード (Store in Vaultで保存可能) || (任意) |- | Default Schema || 接続時にデフォルトで選択するデータベース || (任意) |} </center> <br> 接続方法には、以下の選択肢がある。<br> <br> * Standard (TCP/IP) *: 標準的なTCP/IP接続 * Local Socket/Pipe *: Unixソケットまたは名前付きパイプ (ローカル接続) * Standard TCP/IP over SSH *: SSHトンネル経由の接続 <br> 保存された接続は、ホーム画面のMySQL Connectionsセクションに表示される。<br> <br> ==== SSH経由の接続 ==== SSH経由でMySQLサーバに接続する手順を以下に示す。<br> この方法は、直接MySQLポートにアクセスできない環境で有用である。<br> <br> 接続設定手順を以下に示す。<br> <br> # [Setup New Connection]ダイアログで、[Connection Method]を[Standard TCP/IP over SSH]に変更する。 #: プルダウンメニューから選択する。 # SSH設定を入力する。 #: SSH Hostname、SSH Username、SSH Password または SSH Key File # MySQL設定を入力する。 #: MySQL Hostname (通常は 127.0.0.1)、MySQL Server Port、Username、Password # [Test Connection]ボタンを押下して、接続を確認する。 # SSH接続とMySQL接続の両方が確認される。 <br> 下表に、SSH設定項目を示す。<br> <br> <center> {| class="wikitable" |+ SSH接続設定項目 ! 項目 !! 説明 !! 例 |- | SSH Hostname || SSHサーバのホスト名またはIPアドレス || ssh.example.com |- | SSH Username || SSHログインユーザ名 || ubuntu |- | SSH Password || SSHパスワード (パスワード認証の場合) || (任意) |- | SSH Key File || 秘密鍵ファイルのパス (公開鍵認証の場合) || ~/.ssh/id_rsa |- | MySQL Hostname || MySQLサーバのホスト名 || 127.0.0.1 |- | MySQL Server Port || MySQLサーバのポート番号 || 3306 |} </center> <br> SSH秘密鍵を使用する場合の注意事項を以下に示す。<br> * 秘密鍵はOpenSSH形式である必要がある。 * PuTTY形式 (.ppk) の秘密鍵は、そのままでは使用できない。 * PuTTYgenを使用して、PuTTY形式をOpenSSH形式に変換する必要がある。 <br> PuTTY形式からOpenSSH形式へ変換する手順を以下に示す。<br> <br> # PuTTYgenを起動する。 # .ppkファイルを読み込む。 #: [Conversions] - [Import key]を選択する。 # [Conversions] - [Export OpenSSH key]を選択して、OpenSSH形式でエクスポートする。 # [SSH Key File]に保存した秘密鍵ファイルを指定する。 # パスフレーズが必要な場合は、[SSH Key Passphrase]を入力する。 <br> <u>Windows環境でSSH Key Fileのパスに日本語が含まれている場合、接続に失敗する可能性がある。</u><br> <u>秘密鍵ファイルは、英数字のみのパスに配置することを推奨する。</u><br> <br> ==== SSL接続 ==== SSL/TLS暗号化接続を使用する手順を以下に示す。<br> 通信内容を暗号化することで、セキュリティを向上させることができる。<br> <br> * [Setup New Connection]ダイアログの[Advanced]タブを選択する。 * [Use SSL]を[Require] または [Require and Verify CA]に設定する。 * 必要に応じてSSL証明書ファイルを指定する。 *: SSL CA File、SSL Client Certificate File、SSL Client Key File <br> 下表に、SSL設定項目を示す。<br> <br> <center> {| class="wikitable" |+ SSL接続設定項目 ! 項目 !! 説明 |- | Use SSL || SSL接続の使用方法 (No、If available、Require、Require and Verify CA、Require and Verify Identity) |- | SSL CA File || CA証明書ファイルのパス |- | SSL Client Certificate File || クライアント証明書ファイルのパス |- | SSL Client Key File || クライアント秘密鍵ファイルのパス |} </center> <br> 下表に、Use SSLの設定値の意味を示す。<br> <br> <center> {| class="wikitable" |+ Use SSL設定値一覧 ! 設定値 !! 説明 |- | No || SSL接続を使用しない。 |- | If available || サーバがSSLをサポートしている場合のみSSL接続を使用する。 |- | Require || SSL接続を必須とする。(証明書の検証は行わない) |- | Require and Verify CA || SSL接続を必須とし、CA証明書で検証する。 |- | Require and Verify Identity || SSL接続を必須とし、CA証明書とホスト名を検証する。(最も安全) |} </center> <br> MySQLサーバ側でもSSL設定が必要である。<br> 詳細は、[[MySQL - SSL TLS接続]]のページを参照すること。<br> <br><br> == SQL開発機能 == MySQL WorkbenchのSQL開発機能は、SQLクエリの作成、実行、デバッグを支援する。<br> <br> ==== クエリエディタ ==== クエリエディタの主要機能を以下に示す。<br> <br> * シンタックスハイライト *: SQL構文、キーワード、関数名、文字列、コメントを色分け表示 * 自動補完 *: テーブル名、列名、キーワード、関数名の入力候補を表示 *: Ctrl+Space で候補一覧を表示 * 複数タブ対応 *: 複数のSQLスクリプトを同時に編集可能 * コード整形 *: SQL文を自動的に整形 (インデント、改行) *: [Ctrl] + [B]キーで実行 * クエリ実行履歴 *: 過去に実行したクエリを自動的に記録 *: [Ctrl] + [Shift] + [H]キーで履歴パネルを表示 <br> クエリの実行方法を以下に示す。<br> <br> # カーソル位置のクエリを実行 #: [Ctrl] + [Enter]キー または 稲妻アイコンを選択する。 # 選択したクエリを実行 #: テキストを選択して、[Ctrl] + [Shift] + [Enter]キーを押下する。 # スクリプト全体を実行 #: [Ctrl] + [Shift] + [Enter]キーを押下する。(選択なし) <br> クエリ実行の制御を以下に示す。<br> <br> # クエリ実行の停止 #: [Ctrl] + [Alt] + [Shift] + [Q]キー または 停止アイコンを選択する。 # トランザクション制御 #: Auto-Commit ON / OFFの切り替え #: 手動コミット / ロールバック <br> ==== スニペット (再利用可能なSQL) ==== スニペット機能により、頻繁に使用するSQL文を登録して再利用できる。<br> <br> スニペットの管理を以下に示す。<br> <br> # [View] - [Snippets] - [Show Snippets]を選択して、SQL Snippet Panelを表示する。 # コンテキストメニューから[Add Snippet]を選択して、新規スニペットを作成する。 # スニペット名と内容を入力する。 #: Title、SQL Template # スニペットをダブルクリックして、スニペットを使用する。 <br> スニペットの例を以下に示す。<br> <br> <syntaxhighlight lang="mysql"> -- ユーザ一覧 SELECT user, host FROM mysql.user; -- データベース一覧 SHOW DATABASES; -- テーブル一覧 SHOW TABLES; -- テーブル構造確認 DESCRIBE table_name; -- 実行中のクエリ確認 SHOW PROCESSLIST; </syntaxhighlight> <br> スニペットはプレースホルダーをサポートする。<br> プレースホルダーを使用することで、汎用的なSQL文を作成できる。<br> <br> <syntaxhighlight lang="mysql"> SELECT * FROM <テーブル名> WHERE <カラム名> = <値>; </syntaxhighlight> <br> スニペットを挿入後、プレースホルダー部分を実際の値に置き換える。<br> <br> ==== 結果パネル ==== <center> {| class="wikitable" |+ 結果パネルの機能 ! 機能 !! 説明 |- | テーブル形式表示 || クエリ結果を表形式で表示する。 |- | 結果セット内の値を直接編集可能 || セルをダブルクリックして編集する。Apply ボタンでデータベースに反映される。 |- | フィルタリング || カラムヘッダーの右クリックからフィルタ設定が可能である。 |- | ソート機能 || カラムヘッダーをクリックして昇順/降順ソートが可能である。 |- | 結果のエクスポート || 右クリック → Export Recordset でエクスポートが可能である。 |} </center> <br> <center> {| class="wikitable" |+ 結果パネルの表示設定 ! 設定項目 !! 説明 |- | NULL値の表示 || NULLは灰色背景で表示される。 |- | バイナリデータの表示 || BLOBデータは、<u>BLOB - XXX bytes</u> と表示される。 |- | 大量データの制限 || デフォルトで1000行まで表示される。<br>[Edit] - [Preferences] - [SQL Editor] -[Limit Rows] で変更可能である。 |} </center> <br> 複数の結果セットが返される場合 (ストアドプロシージャ等)、タブで切り替えて表示される。<br> <br> ==== Visual Explain (実行計画の可視化) ==== Visual Explain機能により、クエリの実行計画をグラフィカルに確認できる。<br> <br> <center> {| class="wikitable" |+ Visual Explainの使用方法 ! ステップ !! 説明 |- | クエリエディタでSELECT文を入力 || UPDATE / DELETE文のVisual Explainも可能である。 |- | [Query] - [Explain Current Statement]を実行<br>または、[Ctrl] + [Alt] + [X]キーで実行する。 || - |- | 実行計画がグラフィカルなツリー構造で表示される || 各ノードが処理ステップを表す。 |} </center> <br> <center> {| class="wikitable" |+ Visual Explainで表示されるビュー ! ビュー名 !! 説明 |- | Visual Explain (グラフィカルビュー) || ツリー構造で実行順序を可視化する。 |- | Execution Plan (テーブルビュー) || EXPLAIN結果をテーブル形式で表示する。 |} </center> <br> 下表に、Visual Explainで表示される情報を示す。<br> <br> <center> {| class="wikitable" |+ Visual Explain表示情報 ! 項目 !! 説明 |- | 処理コスト || 各処理ステップのコスト (相対値) |- | 実行順序 || クエリの実行順序 (上から下へ) |- | 使用インデックス || 各テーブルアクセスで使用されるインデックス |- | スキャンタイプ || フルテーブルスキャン、インデックススキャン、レンジスキャン等 |- | フィルタ条件 || WHERE句の条件適用状況 |- | 処理行数 || 各ステップで処理される推定行数 |} </center> <br> <center> {| class="wikitable" |+ スキャンタイプの種類 ! スキャンタイプ !! 説明 |- | Full Table Scan || テーブル全体をスキャンする。(インデックス未使用) |- | Index Scan || インデックスを使用してスキャンする。 |- | Range Scan || インデックスの範囲スキャンを行う。 |- | Unique Key Lookup || 主キーまたはユニークインデックスによる1行検索を実行する。 |} </center> <br> Visual Explainの活用例を以下に示す。<br> <br> * 処理コストが高いステップを特定 *: ボトルネックの発見 * インデックスが使用されていないテーブルを特定 *: インデックス追加の検討 * 不要なフルテーブルスキャンを発見 *: クエリ最適化の検討 <br> 詳細な実行計画の分析については、[[MySQL - パフォーマンスチューニング]]のページを参照すること。<br> <br><br> == データモデリング機能 == MySQL Workbenchのデータモデリング機能により、ビジュアルにデータベース構造を設計できる。<br> <br> ==== ER図設計 (EER Diagram) ==== EER図 (Enhanced Entity-Relationship Diagram) を作成する手順を以下に示す。<br> <br> # [File] - [New Model]を選択する。<br>または、ホーム画面の[Create new EER Model]を選択する。 # Model概要画面が表示される。 #: Model名、説明、デフォルト文字セット等を設定する。 # [Add Diagram]ボタンで新規ダイアグラムを作成する。 #: キャンバスが表示される。 # 左側のツールパレットからテーブルアイコンを選択する。 #: キャンバス上で選択して、テーブルを配置する。 # テーブルをダブルクリックして編集する。 #: テーブル名、列定義、インデックス、外部キー等を設定する。 <br> 下表に、テーブルの編集項目を示す。<br> <br> <center> {| class="wikitable" |+ テーブル編集項目一覧 ! タブ名 !! 編集項目 |- | Columnsタブ || 列名、データ型、NULL許可、デフォルト値、AUTO_INCREMENT |- | Indexesタブ || プライマリキー、ユニークインデックス、通常インデックス |- | Foreign Keysタブ || 外部キー制約の定義 |- | Triggersタブ || トリガーの定義 |- | Optionsタブ || ストレージエンジン、文字セット、コメント |} </center> <br> リレーションシップの作成を以下に示す。<br> <br> # ツールパレットから関係線アイコンを選択する。 #: <u>1:n</u>、<u>1:1</u>、<u>n:m</u> 等 # 親テーブルを選択する。 #: 外部キーの参照先 # 子テーブルを選択する。 #: 外部キーを持つテーブル # 自動的に外部キー制約が作成される。 #: 参照整合性が定義される。 <br> カーディナリティの種類を以下に示す。<br> <br> <center> {| class="wikitable" |+ テーブル間の関係タイプ ! 関係タイプ !! 説明 |- | 1:n (1対多) || 最も一般的な関係である。<br>例: 顧客と注文 |- | 1:1 (1対1) || 一意な関係である。<br>例: ユーザと詳細プロフィール |- | n:m (多対多) || 中間テーブルを自動生成する。 |} </center> <br> ==== フォワードエンジニアリング ==== フォワードエンジニアリングにより、EER図からCREATE TABLE文を自動生成できる。<br> <br> 実行手順を以下に示す。<br> <br> # [File] - [Export] - [Forward Engineer SQL CREATE Script]を選択する。 # エクスポートオプションを選択する。 #: DROP TABLE文の生成、CREATE DATABASE文の生成等 # SQLスクリプトの保存先を指定する。 #: .sqlファイルとして保存する。 # 生成されたSQLスクリプトを確認する。 #: CREATE TABLE、CREATE INDEX、ALTER TABLE等 <br> 生成されるSQL文の例を以下に示す。<br> <br> <syntaxhighlight lang="mysql"> CREATE TABLE IF NOT EXISTS `mydb`.`users` ( `id` INT NOT NULL AUTO_INCREMENT, `username` VARCHAR(45) NOT NULL, `email` VARCHAR(100) NULL, `created_at` TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (`id`), UNIQUE INDEX `username_UNIQUE` (`username` ASC)) ENGINE = InnoDB; CREATE TABLE IF NOT EXISTS `mydb`.`orders` ( `id` INT NOT NULL AUTO_INCREMENT, `user_id` INT NOT NULL, `order_date` DATETIME NULL, `total` DECIMAL(10,2) NULL, PRIMARY KEY (`id`), INDEX `fk_orders_users_idx` (`user_id` ASC), CONSTRAINT `fk_orders_users` FOREIGN KEY (`user_id`) REFERENCES `mydb`.`users` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION) ENGINE = InnoDB; </syntaxhighlight> <br> データベースに直接適用することも可能である。<br> [Database] - [Forward Engineer]を選択することにより、接続先データベースに直接CREATE TABLE文を実行できる。<br> <br> ==== リバースエンジニアリング ==== リバースエンジニアリングにより、既存のデータベースからEER図を自動生成できる。<br> <br> 実行手順を以下に示す。<br> <br> # [Database] - [Reverse Engineer]を選択する。 #: 接続情報を入力する。 # データベース接続を確認する。 #: Test Connectionで確認する。 # スキーマ選択 #: リバースエンジニアリング対象のデータベースを選択する。 # オブジェクト選択 #: テーブル、ビュー、ストアドプロシージャ、トリガー等を選択する。 # [Execute]ボタンを押下して、リバースエンジニアリング実行する。 #: EER図が自動生成される。 <br> 下表に、取得される情報を示す。<br> <br> <center> {| class="wikitable" |+ リバースエンジニアリングで取得されるスキーマオブジェクト ! オブジェクト種別 !! 説明 |- | テーブル定義 || 列名、データ型、制約、デフォルト値を取得する。 |- | インデックス定義 || プライマリキー、ユニークインデックス、通常インデックスを取得する。 |- | 外部キー制約 || 参照整合性、ON DELETE/UPDATE動作を取得する。 |- | ビュー定義 || VIEW のCREATE文を取得する。 |- | トリガー定義 || トリガーのCREATE文を取得する。 |- | ストアドプロシージャ / 関数 || ルーチンのCREATE文を取得する。 |} </center> <br> <u>生成されたEER図は、編集・保存・エクスポートが可能である。</u><br> <br> ==== モデルの同期 ==== モデル同期機能により、EER図とデータベースの差分を検出して、ALTER TABLE文を自動生成できる。<br> <br> 実行手順を以下に示す。<br> <br> # EER図を編集する。 #: テーブル追加、列追加、インデックス変更等 # [Database] - [Synchronize Model]を選択する。 #: 同期対象の接続を選択する。 # 差分検出する。 #: モデルとデータベースの差分を自動検出 # 変更内容を確認する。 #: CREATE TABLE、ALTER TABLE、DROP TABLE等のSQL文を確認 # 実行 または 保存する。 #: データベースに直接適用 または SQL文をファイルに保存 <br> 差分検出の例を以下に示す。<br> <br> * 新しいテーブルの追加 *: CREATE TABLE文が生成される * 既存テーブルへの列追加 *: ALTER TABLE ADD COLUMN文が生成される * インデックスの追加 *: CREATE INDEX文が生成される * 外部キーの変更 *: ALTER TABLE ADD/DROP FOREIGN KEY文が生成される <br> 生成されるALTER TABLE文の例を以下に示す。<br> <br> <syntaxhighlight lang="mysql"> ALTER TABLE `mydb`.`users` ADD COLUMN `phone` VARCHAR(20) NULL AFTER `email`; ALTER TABLE `mydb`.`orders` ADD INDEX `idx_order_date` (`order_date` ASC); ALTER TABLE `mydb`.`orders` DROP FOREIGN KEY `fk_orders_users`, ADD CONSTRAINT `fk_orders_users` FOREIGN KEY (`user_id`) REFERENCES `mydb`.`users` (`id`) ON DELETE CASCADE ON UPDATE CASCADE; </syntaxhighlight> <br> モデル同期は、スキーマ変更の管理を大幅に簡素化する。<br> <br><br> == サーバ管理機能 == MySQL Workbenchのサーバ管理機能により、MySQLサーバの状態監視と設定変更を実行できる。<br> <br> ==== サーバステータス ==== Server Statusタブで、MySQLサーバの動作状態を確認できる。<br> <br> <center> {| class="wikitable" |+ Server Status Information 表示情報一覧 ! カテゴリ !! 情報項目 !! 説明 |- | Server Status || サーバの起動時刻、稼働時間、バージョン || サーバの基本情報を表示する。 |- | Client Connections || アクティブな接続数、最大接続数、拒否された接続数 || クライアント接続の状況を表示する。 |- | Traffic || 送受信バイト数、送受信パケット数 || ネットワークトラフィックを表示する。 |- | Query Statistics || 実行されたクエリ数<br>SELECT / INSERT / UPDATE / DELETEの内訳 || クエリ実行統計を表示する。 |- | InnoDB Status || InnoDBバッファプールの使用状況、読み書き回数 || InnoDBの詳細ステータスを表示する。 |- | Key Buffer || MyISAMキーバッファの使用状況 || MyISAMキーバッファの状況を表示する。 |} </center> <br> サーバステータスの確認手順を以下に示す。<br> <br> # 接続を開く #: ホーム画面から接続をダブルクリックする。 # [Server] - [Server Status]を選択する。<br>または、[Navigator] - [Management] - [Server Status]を選択する。 # リアルタイムでステータスが更新される。 #: 自動更新間隔は設定可能 <br> 下表に、主要なステータス変数を示す。<br> <br> <center> {| class="wikitable" |+ 主要ステータス変数 ! 変数名 !! 説明 |- | Threads_connected || 現在接続中のスレッド数 |- | Threads_running || 実行中のスレッド数 |- | Uptime || サーバの稼働時間 (秒) |- | Questions || 実行されたクエリの総数 |- | Slow_queries || スロークエリの数 |- | Bytes_sent || 送信バイト数 |- | Bytes_received || 受信バイト数 |- | Innodb_buffer_pool_read_requests || InnoDBバッファプールからの読み取り要求数 |} </center> <br> ステータス変数の詳細は、<code>SHOW STATUS</code> 文でも確認できる。<br> <br> <syntaxhighlight lang="mysql"> SHOW GLOBAL STATUS; SHOW GLOBAL STATUS LIKE 'Threads%'; SHOW GLOBAL STATUS LIKE 'Innodb%'; </syntaxhighlight> <br> ==== ユーザとアクセス権限管理 ==== [Server] - [Users and Privileges]から、MySQLユーザの管理を実行できる。<br> <br> 下表に、ユーザ管理の主要機能を示す。<br> <br> <center> {| class="wikitable" |+ ユーザ管理機能一覧 ! 機能 !! 説明 |- | ユーザ作成 || [Add Account]ボタンでユーザを作成する。 |- | パスワード変更 || ユーザを選択してパスワードを変更する。 |- | グローバル権限設定 || [Administrative Roles]タブで権限を設定する。 |- | スキーマレベル権限設定 || [Schema Privileges]タブでデータベース単位の権限を設定する。 |- | テーブルレベル権限設定 || より細かい粒度での権限制御が可能である。 |- | ロール管理 || MySQL 8.0以降でロールの作成と割り当てが可能である。 |} </center> <br> ユーザ作成の手順を以下に示す。<br> <br> # [Users and Privileges]画面にて、[Add Account]ボタンを押下する。 #: 新規ユーザ作成フォームが表示される。 # [Login Name]、[Limit to Hosts Matching]、[Password]を入力する。 #: 例: user1、%、password123 # [Administrative Roles]タブで権限を選択する。 #: DBA、DBManager、BackupAdmin等 # [Schema Privileges]タブでスキーマ権限を設定する。 #: 特定データベースへのアクセス権限 # [Apply]ボタンを押下して、設定を保存する。 #: GRANT文が自動的に実行される。 <br> 下表に、権限の種類を示す。<br> <br> <center> {| class="wikitable" |+ 主要権限 ! 権限 !! 説明 |- | SELECT || データの読み取り |- | INSERT || データの挿入 |- | UPDATE || データの更新 |- | DELETE || データの削除 |- | CREATE || テーブル/データベースの作成 |- | DROP || テーブル/データベースの削除 |- | ALTER || テーブル構造の変更 |- | INDEX || インデックスの作成/削除 |- | GRANT OPTION || 他ユーザへの権限付与 |- | SUPER || 管理コマンドの実行 |} </center> <br> Administrative Rolesのプリセットを以下に示す。<br> <br> * DBA *: 全ての管理権限 * DBManager *: データベース管理権限 (SUPER以外) * DBDesigner *: スキーマ設計権限 (CREATE、ALTER、DROP) * BackupAdmin *: バックアップ関連権限 * ReplicationAdmin *: レプリケーション管理権限 <br> ユーザ削除は、ユーザを選択して[Delete]ボタンを押下する。<br> <br> ==== サーバログ ==== [Server Logs]タブで、MySQLサーバのログファイルを確認できる。<br> <br> 確認可能なログを以下に示す。<br> <br> <center> {| class="wikitable" |+ サーバログの種類 ! ログ種別 !! 説明 |- | Error Log || サーバのエラー、警告、起動/停止メッセージ |- | General Query Log || 全てのクライアント接続とクエリ |- | Slow Query Log || 実行時間が閾値を超えたクエリ |- | Binary Log || データベース変更イベント (レプリケーション用) |} </center> <br> ログ表示の手順を以下に示す。<br> <br> # [Server] - [Server Logs]を選択する。<br>[Navigator] - [Management] - [Server Logs]を選択する。 # [ログタイプ]を選択する。 #: Error Log、Slow Query Log等 # ログ内容が表示される。 #: テキスト形式で表示 # フィルタ機能で絞り込みを行うこともできる。 #: 日付範囲、エラーレベル等で絞り込み <br> Slow Query Logの分析を以下に示す。<br> <br> * 実行時間が長いクエリを特定 *: パフォーマンス改善の対象を発見 * Query Time、Lock Time、Rows Examined を確認 *: 処理時間とスキャン行数 * クエリ最適化の検討 *: インデックス追加、クエリ書き換え <br> ログファイルの場所は、設定により異なる。<br> <br> <syntaxhighlight lang="mysql"> SHOW VARIABLES LIKE 'log_error'; SHOW VARIABLES LIKE 'slow_query_log_file'; SHOW VARIABLES LIKE 'general_log_file'; </syntaxhighlight> <br> 詳細なログ設定については、[[MySQL - 設定ファイル]]のページを参照すること。<br> <br><br> == パフォーマンスモニタリング == MySQL Workbenchのパフォーマンスモニタリング機能により、サーバのパフォーマンスをリアルタイムで分析できる。<br> <br> ==== Performance Dashboard ==== Performance Dashboardは、MySQLサーバのパフォーマンスをリアルタイムで可視化する。<br> <br> アクセス方法を以下に示す。<br> <br> # 接続を開く #: ホーム画面から接続をダブルクリックする。 # [Server] - [Performance Dashboard]を選択する。<br>または、[Navigator] - [Performance] - [Dashboard]を選択する。 <br> <center> {| class="wikitable" |+ Performance Dashboard メトリクスとグラフ表示機能 ! カテゴリ !! 項目 !! 説明 |- | rowspan="3" | Server Metrics || Network Status || 送受信データ量のグラフ表示 |- | MySQL Status || アクティブ接続数、クエリキャッシュヒット率 |- | InnoDB Metrics || InnoDBバッファプール使用率、読み書き回数 |- | rowspan="2" | Network Metrics || Client Connections || 接続数の推移 |- | Traffic || ネットワークトラフィック |- | rowspan="3" | InnoDB Metrics || Buffer Pool Efficiency || キャッシュヒット率 |- | Disk Reads / Writes || ディスクI/O回数 |- | Log File Usage || REDOログの使用状況 |- | rowspan="3" | グラフ表示特徴 || リアルタイム更新 || デフォルトで5秒間隔で更新される。 |- | 時系列グラフ || 過去のメトリクスを時系列で表示する。 |- | 拡大 / 縮小 || グラフをクリックして詳細表示が可能である。 |} </center> <br> ==== Performance Reports ==== Performance Reportsは、Performance Schemaのデータを分析してレポートを生成する。<br> <br> 下表に、利用可能なレポートを示す。<br> <br> <center> {| class="wikitable" |+ Performance Reports 利用可能なレポート一覧 ! レポート名 !! 説明 |- | Database || I/Oホットスポット、ファイルI/O統計 |- | High Cost SQL Statements || 実行時間が長いクエリ、頻繁に実行されるクエリ |- | Wait Statistics || 待機イベントの統計 |- | InnoDB Status || InnoDBの詳細ステータス |} </center> <br> レポート表示の手順を以下に示す。<br> <br> # [Server] - [Performance Reports]を選択する。<br>または、[Navigator] - [Performance] - [Performance Reports]を選択する。 # レポートタイプを選択する。 #: High Cost SQL Statements等 # レポート内容が表示される。 #: テーブル形式で詳細データを表示 <br> 下表に、High Cost SQL Statementsレポートの情報を示す。<br> <br> <center> {| class="wikitable" |+ High Cost SQL Statements表示項目 ! 項目 !! 説明 |- | Query || 実行されたSQL文 |- | Exec Count || 実行回数 |- | Total Latency || 総実行時間 |- | Avg Latency || 平均実行時間 |- | Lock Latency || ロック待機時間 |- | Rows Examined || スキャンした行数 |- | Rows Sent || 返された行数 |} </center> <br> レポートの活用例を以下に示す。<br> <br> * 高コストクエリの特定 *: Total Latencyが大きいクエリを発見 * 頻繁に実行されるクエリの最適化 *: Exec Countが多いクエリのキャッシュ検討 * 不要なフルテーブルスキャンの発見 *: Rows Examinedが極端に多いクエリを特定 <br> ==== Performance Schema ==== Performance Schemaは、MySQL 5.6以降で導入されたパフォーマンス診断機能である。<br> MySQL Workbenchは、Performance Schemaから自動で情報を収集する。<br> <br> Performance Schemaの有効化を以下に示す。<br> <br> <syntaxhighlight lang="mysql"> -- Performance Schema有効化確認 SHOW VARIABLES LIKE 'performance_schema'; -- 有効化 (my.cnfファイルで設定) </syntaxhighlight> <br> <syntaxhighlight lang="ini"> [mysqld] performance_schema = ON </syntaxhighlight> <br> Performance Schemaは、MySQL 5.6.6以降でデフォルトで有効化されている。<br> Performance Schemaのオーバーヘッドは、通常1〜3[%]程度である。<br> <br> <center> {| class="wikitable" |+ Performance Schemaから取得される情報 ! 情報種別 !! 説明 |- | イベント統計 || クエリ実行、ファイルI/O、ネットワークI/O |- | 待機イベント || ロック待機、I/O待機 |- | メモリ使用統計 || メモリ割り当て状況 |- | スレッド統計 || 各スレッドのリソース使用状況 |} </center> <br> <center> {| class="wikitable" |+ Performance Schemaの主要テーブル一覧 ! テーブル名 !! 説明 |- | events_statements_summary_by_digest || SQL文のダイジェスト統計 |- | file_summary_by_instance || ファイルI/O統計 |- | table_io_waits_summary_by_table || テーブルI/O統計 |- | events_waits_summary_global_by_event_name || 待機イベント統計 |} </center> <br> SYSスキーマを使用することで、Performance Schemaのデータを簡単に参照できる。<br> <br> <syntaxhighlight lang="mysql"> -- 高コストクエリの確認 SELECT * FROM sys.statement_analysis ORDER BY total_latency DESC LIMIT 10; -- テーブルI/O統計 SELECT * FROM sys.schema_table_statistics ORDER BY total_latency DESC LIMIT 10; -- ファイルI/O統計 SELECT * FROM sys.io_global_by_file_by_bytes ORDER BY total DESC LIMIT 10; </syntaxhighlight> <br> 詳細なパフォーマンスチューニングについては、[[MySQL - パフォーマンスチューニング]]のページを参照すること。<br> <br><br> == データのインポート / エクスポート == ==== データインポート ==== [Server] - [Data Import]を選択して、データインポートを実行できる。<br> <br> <center> {| class="wikitable" |+ インポート方法一覧 ! インポート方法 !! 説明 |- | Import from Dump Project Folder || mysqldumpで作成されたフォルダ構造からインポートする。 |- | Import from Self-Contained File || 単一のSQLファイルからインポートする。 |} </center> <br> インポート手順を以下に示す。<br> <br> # [Server] - [Data Import]を選択する。<br>または、[Navigator] - [Management] - [Data Import/Restore]を選択する。 # インポート方法を選択する。 #: [Import from Self-Contained File]等 # インポートファイルを指定する。 #: .sqlファイル または フォルダを選択 # インポート先のスキーマを選択する。 #: 既存スキーマ または 新規作成 # 各オプションを設定する。 #: [Default Target Schema、Dump Structure and Data]等 # [Start Import]ボタンを押下して実行する。 #: インポート進捗が表示される。 <br> 下表に、インポートオプションを示す。<br> <br> <center> {| class="wikitable" |+ インポートオプション ! オプション !! 説明 |- | Dump Structure and Data || テーブル構造とデータの両方をインポート |- | Dump Data Only || データのみをインポート |- | Dump Structure Only || テーブル構造のみをインポート |} </center> <br> ===== Table Data Import Wizard ===== Table Data Import Wizardにより、CSV、JSON等のファイルから特定テーブルにデータをインポートできる。<br> <br> 使用手順を以下に示す。<br> <br> # Schemasパネルで対象テーブルを右クリックする。 #: 対象スキーマを展開してテーブルを表示 # [Table Data Import Wizard]を選択する。 #: ウィザードが起動 # インポートファイルを指定する。 #: CSVファイル または JSONファイルを選択 # ファイル形式を設定する。 #: 区切り文字 (カンマ、タブ、セミコロン等) #: 文字エンコーディング (UTF-8、Shift_JIS等) # カラムマッピングを設定する。 #: CSVカラムとテーブルカラムの対応を確認 # [Next]ボタンを押下する。 #: インポート設定確認画面 # [Next]ボタンを押下して、インポートを実行する。 #: インポート結果が表示される。 <br> 下表に、CSVファイル形式の設定項目を示す。<br> <br> <center> {| class="wikitable" |+ CSV形式設定項目 ! 項目 !! 説明 !! デフォルト値 |- | Field Separator || フィールドの区切り文字 || カンマ (,) |- | Line Separator || 行の区切り文字 || LF (\n) |- | Enclose Strings || 文字列を囲む文字 || ダブルクォート (") |- | Encoding || 文字エンコーディング || UTF-8 |- | First Row Contains Column Names || 1行目がカラム名か || ON |} </center> <br> ==== データエクスポート ==== [Server] - [Data Export]を選択して、データエクスポートを実行できる。<br> <br> <center> {| class="wikitable" |+ エクスポート方法一覧 ! エクスポート方法 !! 説明 |- | Export to Self-Contained File || 全てのデータを1つのSQLファイルにエクスポートする。 |- | Export to Dump Project Folder || スキーマごとにフォルダ分割してエクスポートする。 |} </center> <br> ===== Data Export Wizard ===== エクスポート手順を以下に示す。<br> <br> # [Server] - [Data Export]を選択する。<br>または、[Navigator] - [Management] - [Data Export/Restore]を選択する。 # エクスポート対象のスキーマを選択する。 #: 左側のリストからチェック # エクスポート対象のテーブルを選択する。 #: 右側のリストからチェック # エクスポート方法を選択する。 #: [Export to Self-Contained File] または [Export to Dump Project Folder] # エクスポートオプションを設定する。 #: [Dump Stored Procedures and Functions]、[Dump Events、Dump Triggers]等 # [Start Export]ボタンを押下して、実行する。 #: エクスポート進捗が表示される。 <br> 下表に、エクスポートオプションを示す。<br> <br> <center> {| class="wikitable" |+ エクスポートオプション ! オプション !! 説明 |- | Dump Structure and Data || テーブル構造とデータの両方をエクスポート |- | Dump Data Only || データのみをエクスポート |- | Dump Structure Only || テーブル構造のみをエクスポート |- | Single Transaction || 単一トランザクション内でエクスポート (整合性保証) |- | Include Create Schema || CREATE DATABASE文を含める |- | Dump Stored Procedures and Functions || ストアドプロシージャと関数を含める |- | Dump Events || イベントを含める |- | Dump Triggers || トリガーを含める |} </center> <br> Single Transactionオプションを有効にすることで、エクスポート中のデータ変更を防ぎ、整合性を保証する。<br> 大規模データベースでは、Export to Dump Project Folderを使用することで、複数ファイルに分割され、管理が容易になる。<br> <br> ==== Result Set Export ==== クエリ結果パネルから、結果セットを直接エクスポートできる。<br> <br> エクスポート手順を以下に示す。<br> <br> # クエリを実行する。 #: SELECT文等を実行して結果を取得する。 # 結果パネルを右クリックする。 #: [Export Recordset to an External File]を選択する。 # エクスポート形式を選択する。 #: CSV、JSON、XML、HTML、SQL INSERT文 # ファイル名と保存先を指定する。 #: 拡張子は形式に応じて自動設定 # エクスポートを実行する。 #: 結果セットがファイルに出力される。 <br> <center> {| class="wikitable" |+ エクスポート形式一覧 ! 形式 !! 説明 |- | CSV || カンマ区切り形式 (Excel等で読み込み可能) |- | JSON || JSON形式 (APIやWeb開発で使用) |- | XML || XML形式 (データ交換フォーマット) |- | HTML || HTMLテーブル形式 (ブラウザで表示可能) |- | SQL INSERT || INSERT文形式 (他DBへのデータ移行) |} </center> <br> Result Set Exportは、少量データの抽出に適している。<br> 大量データのエクスポートには、Data Export Wizardを使用することを推奨する。<br> <br><br> == マイグレーション (他DBからの移行) == MySQL Workbenchは、他のデータベースシステムからMySQLへの移行を支援する。<br> <br> ==== Database Migration Wizard ==== Database Migration Wizardは、ビジュアルウィザード形式でデータベース移行を実行する。<br> <br> 下表に、対応ソースDBを示す。<br> <br> <center> {| class="wikitable" |+ マイグレーション対応データベース一覧 ! データベース名 !! 対応バージョン |- | Microsoft SQL Server || SQL Server 2005以降 |- | Microsoft Access || Access 2000以降 (.mdb、.accdb) |- | PostgreSQL || PostgreSQL 8.0以降 |- | Sybase ASE || Sybase Adaptive Server Enterprise |- | Sybase SQL Anywhere || Sybase SQL Anywhere 9以降 |- | SQLite || SQLite 3.x |- | その他ODBC接続可能なデータベース || ODBCドライバ経由で接続 |} </center> <br> マイグレーション手順を以下に示す。<br> <br> # [Database] - [Migration Wizard]を選択する。 #: ウィザードが起動 # ソースDBの接続設定を行う。 #: Database System、Connection Method、Driver等を設定 # ソースDBに接続する。 #: [Test Connection]ボタンを押下する。 # 移行対象のスキーマ / テーブルを選択する。 #: 移行したいオブジェクトを選択 # ターゲットMySQLの接続設定を行う。 #: 移行先のMySQLサーバ情報を入力 # オブジェクトを変換する。 #: スキーマ、テーブル、カラムの変換ルールを確認 # 手動調整する。 #: 必要に応じて変換ルールを修正 # CREATE TABLE文を実行する。 #: MySQLサーバにテーブルを作成 # データを転送する。 #: ソースDBからMySQLへデータをコピー # マイグレーション完了 #: 結果レポートを表示 <br> ==== スキーマ変換 ==== Database Migration Wizardは、ソースDBのスキーマをMySQL互換形式に自動変換する。<br> <br> 下表に、自動変換される項目を示す。<br> <br> <center> {| class="wikitable" |+ Migration Wizardで自動変換される項目一覧 ! 変換項目 !! 説明 |- | テーブル構造 || テーブル名、カラム定義が変換される。 |- | データ型変換 || ソースDBのデータ型をMySQLのデータ型にマッピングされる。 |- | プライマリキー || 主キー制約が変換される。 |- | ユニークインデックス || UNIQUE制約が変換される。 |- | 外部キー制約 || FOREIGN KEY制約が変換される。 |- | デフォルト値 || DEFAULT制約が変換される。 |- | NOT NULL制約 || NULL許可設定が変換される。 |} </center> <br> 下表に、データ型変換の例を示す。<br> <br> <center> {| class="wikitable" |+ データ型変換例 (SQL Server → MySQL) ! SQL Server型 !! MySQL型 |- | INT || INT |- | BIGINT || BIGINT |- | VARCHAR(n) || VARCHAR(n) |- | NVARCHAR(n) || VARCHAR(n) CHARACTER SET utf8mb4 |- | DATETIME || DATETIME |- | BIT || TINYINT(1) |- | MONEY || DECIMAL(19,4) |- | UNIQUEIDENTIFIER || CHAR(36) |} </center> <br> 下表に、手動調整が必要な項目を示す。<br> <br> <center> {| class="wikitable" |+ Migration Wizardで手動調整が必要な項目一覧 ! 項目 !! 説明 |- | 複雑なストアドプロシージャ || T-SQL (SQL Server)、PL/pgSQL (PostgreSQL) 等の構文はMySQLと異なるため手動で書き換えが必要である。 |- | トリガー || トリガー構文の違いにより手動調整が必要である。 |- | ユーザ定義型 || MySQLには対応する型が存在しない場合がある。 |- | システム固有関数 || <code>GETDATE()</code> (SQL Server) -> <code>NOW()</code> (MySQL) 等の置換が必要である。 |} </center> <br> 変換操作は、SQLスクリプトとして確認・編集可能である。<br> 変換後のCREATE TABLE文は、ウィザード内で編集できる。<br> <br> ==== データ転送と検証 ==== CREATE TABLE実行後、データのETL (Extract、Transform、Load) 処理を実行する。<br> <br> データ転送の流れを以下に示す。<br> <br> # ソースDBからデータを抽出する。 #: SELECT文でデータを取得 # データを変換する。 #: 必要に応じてデータ型変換、文字エンコーディング変換 # MySQLへデータロードする。 #: INSERT文 または <u>LOAD DATA INFILE</u> でデータ挿入 # 整合性を検証する。 #: 行数の確認、サンプルデータの比較 <br> 下表に、転送オプションを示す。<br> <br> <center> {| class="wikitable" |+ 転送オプション ! オプション !! 説明 |- | バルクインサート || 複数行を1度に挿入して高速化 |- | トランザクション制御 || コミット間隔の設定 |- | エラーハンドリング || エラー発生時の処理 (スキップ、停止) |} </center> <br> マイグレーション後の検証項目を以下に示す。<br> <br> * 行数の一致 *: ソースDBとMySQLのレコード数を比較 * データサンプルの確認 *: 主要テーブルのデータを目視確認 * 外部キー整合性 *: 参照整合性が保たれているか確認 * インデックスの確認 *: 必要なインデックスが作成されているか確認 <br> <u>※制限事項</u><br> * <u>ストアドプロシージャ・トリガーの完全自動変換は不可</u> *: 手動での書き換えが必要 * <u>トランザクション分離レベルの違いに注意する。</u> *: READ COMMITTEDがデフォルトのDBとREPEATABLE READがデフォルトのMySQLで動作が異なる可能性 * <u>大規模データベースでは時間が掛かる。</u> *: 数[GB]以上のデータ転送には数時間〜数日かかる場合がある <br> マイグレーション後は、アプリケーションのテストを十分に実施することを推奨する。<br> <br><br> == 設定・カスタマイズ == ==== Preferences (環境設定) ==== Preferencesダイアログで、MySQL Workbenchの動作設定を変更できる。<br> <br> Preferencesへのアクセス方法を以下に示す。<br> <br> * Windows / Linux *: [Edit] - [Preferences] * MacOS *: [MySQL Workbench] - [Preferences] <br> <center> {| class="wikitable" |+ Preferences - Appearance (外観設定) ! 設定項目 !! 説明 |- | Color Theme || Light、Dark、Systemから選択可能である。 |- | Font || エディタフォント、フォントサイズを設定する。 |- | Language || インターフェース言語 (英語、日本語等) を選択する。 |} </center> <br> <center> {| class="wikitable" |+ Preferences - SQL Editor (エディタ設定) ! 設定カテゴリ !! 設定項目 !! 説明 |- | Query Editor || タブサイズ、自動インデント、行番号表示 || クエリエディタの表示および動作を設定する。 |- | SQL Execution || Safe Updates || UPDATE/DELETE時のWHERE句必須化を設定する。 |- | SQL Execution || SELECT結果行数制限 || 結果表示の最大行数を設定する。 |- | Auto-completion || 自動補完の動作設定 || 自動補完機能の動作を設定する。 |- | Code Formatting || SQL文の自動整形ルール || SQL文の整形方法を設定する。 |} </center> <br> <center> {| class="wikitable" |+ Preferences - Model (モデリング設定) ! 設定項目 !! 説明 |- | Defaults - ストレージエンジン || デフォルトストレージエンジンを設定する。 |- | Defaults - 文字セット || デフォルト文字セットを設定する。 |- | Diagram || ダイアグラム表示設定、グリッド表示を設定する。 |} </center> <br> <center> {| class="wikitable" |+ Preferences - Modeling (モデリング動作設定) ! 設定項目 !! 説明 |- | MySQL || MySQLバージョン別の動作設定を行う。 |- | Forward Engineering || フォワードエンジニアリング時のオプションを設定する。 |} </center> <br> ==== SQL Editorのカスタマイズ ==== SQL Editorの詳細設定を以下に示す。<br> <br> <center> {| class="wikitable" |+ MySQL Workbench エディタ設定詳細 ! 設定カテゴリ !! メニューパス !! 説明 |- | シンタックスハイライト色設定 || [Preferences] - [Fonts & Colors] - [SQL Editor] || キーワード、文字列、コメント、関数名等の色を個別設定する。 |- | 自動補完動作設定 || [Preferences] - [SQL Editor] - [Auto-completion] || Use uppercase keywords on completion、Enable auto-start of code completion等を設定する。 |- | rowspan="2" | Query Editor設定 || rowspan="2" | [Preferences] - [SQL Editor] - [Query Editor] || Show line numbersで行番号表示を設定する。 |- | || || Tab Size、Insert spaces for tabs でインデント設定を行う。 |} </center> <br> Safe Updatesモードを以下に示す。<br> Safe Updatesモードは、誤った全行更新 / 削除を防ぐため、デフォルトで有効化されている。<br> <br> <syntaxhighlight lang="mysql"> -- Safe Updates有効時、以下のクエリはエラー UPDATE users SET status = 'active'; -- Error: You are using safe update mode -- WHERE句またはLIMITが必要 UPDATE users SET status = 'active' WHERE id = 1; </syntaxhighlight> <br> <center> {| class="wikitable" |+ 主要キーボードショートカット ! 操作 !! Windows / Linux !! MacOS |- | クエリ実行 || [Ctrl] + [Enter]キー || [Cmd] + [Enter]キー | クエリ実行 (選択範囲) || [Ctrl] + [Shift] + [Enter]キー || [Cmd] + [Shift] + [Enter]キー |- | コード整形 || [Ctrl] + [B]キー || [Cmd] + [B]キー |- | コメント化 || [Ctrl] + [/]キー || [Cmd] + [/]キー |- | 検索 || [Ctrl] + [F]キー || [Cmd] + [F]キー |- | 置換 || [Ctrl] + [H]キー || [Cmd] + [H]キー |- | 保存 || [Ctrl] + [S]キー || [Cmd] + [S]キー |- | 自動補完表示 || [Ctrl] + [Space]キー || [Ctrl] + [Space]キー |} </center> <br> ==== 設定ファイルの場所 ==== MySQL Workbenchの設定ファイルは、プラットフォームごとに異なる場所に保存される。<br> <br> * Windows ** 設定ディレクトリ **: C:\Users\<ユーザ名>\AppData\Roaming\MySQL\Workbench ** 主要ファイル **: workbench.conf (メイン設定) **: connections.xml (接続設定) **: main_menu.xml (メニュー設定) *: <br> * Linux ** 設定ディレクトリ **: ~/.config/MySQL/Workbench ** システム設定 **: /usr/share/mysql-workbench/data *: <br> * MacOS ** 設定ディレクトリ **: ~/Library/Application Support/MySQL/Workbench <br> 下表に、設定ファイルの種類を示す。<br> <br> <center> {| class="wikitable" |+ 主要設定ファイル ! ファイル名 !! 説明 |- | workbench.conf || メイン設定 (外観、エディタ設定等) |- | connections.xml || 保存された接続情報 |- | main_menu.xml || メニュー構成 |- | wb_state.xml || ウィンドウ状態 (サイズ、位置) |- | sql_history.xml || SQL実行履歴 |} </center> <br> 設定をリセットする場合は、設定ディレクトリを削除してMySQL Workbenchを再起動する。<br> <br><br> == トラブルシューティング == ==== 接続エラー ==== ===== Cannot connect to MySQL server ===== * 原因 *: MySQLサーバが起動していない、ホスト名/ポート番号が間違っている、認証情報が間違っている * 確認事項 *: MySQLサーバの起動状態確認、ホスト名・ポート番号の確認、ユーザ名・パスワードの確認 * 対処法 *: MySQLサーバ起動、正しい接続情報の入力 <br> # MySQLサーバ起動確認 (Linux) sudo systemctl status mysql # MySQLサーバ起動 (Linux) sudo systemctl start mysql # MySQLサーバ起動確認 (Windows) net start MySQL80 <br> ===== Host is not allowed to connect to this MySQL server ===== * 原因 *: MySQLサーバのbind-address設定、ユーザのhost制限 * 確認事項 *: my.cnfの bind-address設定、ユーザのhost指定 * 対処法 *: bind-addressを0.0.0.0に変更、ユーザのhost指定を変更 <br> <syntaxhighlight lang="mysql"> -- ユーザのhost確認 SELECT user, host FROM mysql.user; -- host指定変更 (例: ローカルのみ → 任意のホスト) RENAME USER 'user1'@'localhost' TO 'user1'@'%'; -- または新規ユーザ作成 CREATE USER 'user1'@'%' IDENTIFIED BY 'password'; GRANT ALL PRIVILEGES ON *.* TO 'user1'@'%'; FLUSH PRIVILEGES; </syntaxhighlight> <br> ===== SSH接続エラー ===== * 原因 *: SSH設定が間違っている。 *: 秘密鍵のフォーマットが間違っている。 *: known_hostsパスに全角文字が含まれている。 * 確認事項 *: SSHホスト名・ユーザ名・秘密鍵パスの確認、秘密鍵フォーマット確認 (OpenSSH形式) * 対処法 *: 正しいSSH設定の入力、秘密鍵をOpenSSH形式に変換、設定ファイルパスを英数字のみに変更する。 <br> # SSH接続確認 ssh user@ssh.example.com # 秘密鍵のパーミッション確認 (Linux/MacOS) chmod 600 ~/.ssh/id_rsa <br> ===== SSL接続エラー ===== * 原因 *: SSL証明書が存在しない。 *: 証明書の有効期限切れ *: 証明書パスが間違っている。 * 確認事項 *: 証明書ファイルの存在確認 *: 証明書の有効期限チェック * 対処法 *: 正しい証明書ファイルの指定 *: 証明書の更新 <br> <syntaxhighlight lang="mysql"> -- MySQLサーバのSSL設定確認 SHOW VARIABLES LIKE '%ssl%'; </syntaxhighlight> <br> ==== クエリ実行エラー ==== ===== Syntax error ===== * 原因 *: SQL文法が間違っている * 確認事項 *: SQL文法の確認 *: キーワードのスペルミス確認 * 対処法 *: SQL文法の修正、Visual Explainで確認 <br> ===== Access denied for user ===== * 原因 *: ユーザ権限が不足している * 確認事項 *: ユーザ権限の確認 * 対処法 *: 必要な権限を付与 <br> <syntaxhighlight lang="mysql"> -- ユーザ権限確認 SHOW GRANTS FOR 'user1'@'%'; -- SELECT権限付与 GRANT SELECT ON mydb.* TO 'user1'@'%'; -- 全権限付与 GRANT ALL PRIVILEGES ON mydb.* TO 'user1'@'%'; FLUSH PRIVILEGES; </syntaxhighlight> <br> ===== You are using safe update mode ===== * 原因 *: Safe UpdatesモードでWHERE句なしのUPDATE / DELETE実行 * 対処法 *: WHERE句またはLIMITを追加、Safe Updatesモード無効化 <br> <syntaxhighlight lang="mysql"> -- Safe Updatesモード無効化 SET SQL_SAFE_UPDATES = 0; -- クエリ実行 UPDATE users SET status = 'active'; -- Safe Updatesモード再有効化 SET SQL_SAFE_UPDATES = 1; </syntaxhighlight> <br> ==== パフォーマンス問題 ==== ===== MySQL Workbenchのメモリ使用量が多い ===== * 原因 *: 大容量の結果セットを表示している。 *: 多数のタブを開いている。 * 対処法 *: 結果セットをLIMITで制限する。 *: 不要なタブを閉じる。 *: 自動保存ファイルを削除する。 *: MySQL Workbenchを再起動する。 <br> <syntaxhighlight lang="mysql"> -- 結果セット制限 SELECT * FROM large_table LIMIT 1000; </syntaxhighlight> <br> ===== 大量データのインポート / エクスポートが遅い ===== * 原因 *: ネットワーク遅延 *: <u>max_allowed_packet</u> サイズ制限 * 対処法 *: max_allowed_packetサイズ増加 *: 直接接続の検討 *: <u>LOAD DATA INFILE</u> の使用検討 <br> <syntaxhighlight lang="mysql"> -- max_allowed_packet確認 SHOW VARIABLES LIKE 'max_allowed_packet'; -- max_allowed_packet変更 (セッション単位) SET GLOBAL max_allowed_packet = 1073741824; </syntaxhighlight> <br> ===== Visual Explainが表示されない ===== * 原因 *: Performance Schemaが無効 *: MySQLバージョンが古い * 確認事項 *: Performance Schema有効化確認 *: MySQLバージョン確認 * 対処法 *: Performance Schemaを有効化 *: MySQLバージョンを更新 <br> <syntaxhighlight lang="mysql"> -- Performance Schema確認 SHOW VARIABLES LIKE 'performance_schema'; </syntaxhighlight> <br> ==== よくあるエラーと対処法 ==== ===== SQLファイルインポートエラー ===== * 原因 *: ファイルパスに日本語が含まれている。 *: ファイルエンコーディングが間違っている。 * 対処法 *: ファイルを英数字のみのパスに配置する。 *: ファイルエンコーディングをUTF-8に変換する。 <br> ===== Windowsユーザ名に日本語が含まれている場合 ===== * 原因 *: 設定ファイルパスに日本語が含まれるため動作不安定 * 対処法 *: 英数字のみのWindowsユーザ名に変更する。 *: 設定ファイルパスを変更 <br> ===== 設定が保存されない ===== * 原因 *: 設定ファイルへの書き込み権限がない * 対処法 *: 管理者権限でMySQL Workbenchを起動 <br> ===== 設定をリセットする ===== * 対処法 *: workbench.confを削除して、MySQL Workbenchを再起動する。 <br> # Windows del C:\Users\[ユーザ名]\AppData\Roaming\MySQL\Workbench\workbench.conf # Linux rm ~/.config/MySQL/Workbench/workbench.conf # MacOS rm ~/Library/Application\ Support/MySQL/Workbench/workbench.conf <br> 設定ファイルを削除後、MySQL Workbenchを起動すると、デフォルト設定で起動される。<br> <br><br> {{#seo: |title={{PAGENAME}} : Exploring Electronics and SUSE Linux | MochiuWiki |keywords=MochiuWiki,Mochiu,Wiki,Mochiu Wiki,MySQL,Database,SQL,MySQL Workbench,Database Design,ER Diagram,EER Diagram,Visual Explain,Data Modeling,Database Migration,SQL Editor,Performance Dashboard,データベース,ER図,データモデリング,マイグレーション,電気回路,電子回路,基板,プリント基板 |description={{PAGENAME}} - MySQL Workbenchの包括的なリファレンス | This page is {{PAGENAME}} in our wiki about electronic circuits and SUSE Linux |image=/resources/assets/MochiuLogo_Single_Blue.png }} __FORCETOC__ [[カテゴリ:MySQL]]
MySQL - MySQL Workbench
に戻る。
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
ツール
リンク元
関連ページの更新状況
特別ページ
ページ情報
We ask for
Donations
Collapse