web-dev-qa-db-ja.com

DrupalデータベースinnodbまたはMyISAM?

Drupalサイトがあり、パフォーマンスの問題が発生しています。 MyISAMからInnoDBにデータベースを変換するにはどうすればよいですか? 切り替えることでパフォーマンスが向上する可能性があることを示します。

MySQLデータベースがInnoDBかMyISAMかを確認するにはどうすればよいですか?

10
chrisjlee

カスタムクエリを実行できます。

SELECT TABLE_NAME, ENGINE
FROM information_schema.TABLES
WHERE TABLE_SCHEMA = 'database_name'

データベース内のすべてのテーブルと、それぞれに使用されているエンジンを一覧表示します。

あるいは、phpMyAdminを使用してデータベースにログインし、データベースを選択することもできます。テーブルのリストのType列にエンジンが表示されます。

個人的にはお勧めします Navicat for MySQL 、これは非常に素晴らしいMySQL GUIであり、このようなことを非常に簡単に見つけることができます。

ソース: http://www.electrictoolbox.com/mysql-table-storage-engine/

8
Clive

私の最高の経験は、テーブルごとに決定することでした。 InnoDBは、テーブルのロックを回避できるため(1つのプロセスが書き込みを行っている間、他のプロセスがテーブルから読み取ることができないため)、ページャークエリによく使用されるCOUNT()でひどく実行されます。

(編集:下記のクライブスのコメントをご覧ください)

使用しているDBに応じて、MySQLの設定にも影響があります。サーバーにアクセスできる場合、設定を確認するには、mysqltunerが最初のステップです。

https://github.com/rackerhacker/MySQLTuner-Perl#readme

6
Martin

Webサイトをより速く取得するために物事を試すことは、やみくもに車を変更するようなものであり、次回はもっと速くなることを願っています。

まず、ぶら下がっている果物を試してください。それでも効果がない場合は、実際のボトルネックを見つけてください。

  1. 組み込みのメカニズムをオンにしましたか:ページキャッシュ(匿名ユーザーに対してのみ有効)、CSS、およびJS集約?
  2. ホストがAPCなどのオペコードキャッシュを提供している場合は、それをオンにします。
  3. Drupal完全なDBを含む地域を設定します。
  4. XDebugが実行されていることを確認してください。
  5. 実際のパフォーマンスプロファイリングを開始します。これにより、Webサイトのどの部分が多くの時間を消費しているかを特定できます。ウェブサイトが遅いほど、有罪のコード/コンポーネントを見つけやすくなります。

多くの場合、それはインデックスを必要とする遅いDBクエリ、または遅い方法で物事を行うモジュールです。

また、ホスティング業者間の大きな違いも発見しました。新しいdrupalをそのままインストールした場合、パフォーマンスに問題はありませんか?そうでない場合は、他のホスティングサービスを探す時間です。

6
BetaRide

頭を上げただけです。 on Drupal 6の場合、 DBTuner モジュールをインストールできます。これにより、テーブルをMyISAMからInnoDBに簡単に移動できます。そのため、そのためのモジュールがあります。

5
mikeytown2

FWIWほぼ20KのノードDrupal 6.xサイトでパフォーマンスの問題が発生しており、すべてのテーブルをInnoDBに移動することを選択しました。それを処理する方法は簡単で、mysqldumpを使用してすべてのコンテンツをSQLファイルにダンプし、エディター(sed)を使用してMyISAMのすべての出現箇所をInnoDBに置き換え、そのファイルからデータベースをリロードします。欠点の1つは、InnoDBデータベース(IIRC)からスペースを回復できないことですが、重複するテーブルを別のDBに保持している限り、問題は発生しません。ああ、パフォーマンスが大幅に向上しました。4つのDrupalインスタンスがあるため、テーブルファイルの数は膨大ですファイルシステムから削除されました(はい、それらはInnoDBファイル自体に含まれています)これは私の$ .02の価値があります。

5
bobmct