sql >> データベース >  >> RDS >> Mysql

15便利なMySQL/MariaDBパフォーマンスのチューニングと最適化のヒント

    MySQL は強力なオープンソースのリレーショナルデータベース管理システムです。 または要するにRDBMS 。 1995年にリリースされました(20歳)。 構造化照会言語を使用します これは、データベース内のコンテンツを管理するためのおそらく最も一般的な選択肢です。 MySQLの最新バージョンは5.6.25 2015年5月29日にリリースされました 。

    MySQLの興味深い事実は、その名前がミカエルウィデニウスのに由来しているという事実です。 (MySQLの作成者)娘私の。でも MySQLについては興味深い事実がたくさんありますが、この記事は、MySQLサーバーの管理に役立ついくつかの有用なプラクティスを示すことを目的としています。

    4月2009 MySQLプロジェクトはOracleによって購入されました。その結果、 MariaDBと呼ばれるMySQLコミュニティフォーク 作成されました。フォークを作成した主な理由は、GeneralPublicLicenseの下でプロジェクトを無料に保つことでした。

    今日MySQL およびMariaDB WordPress などのWebアプリケーションで使用される最も頻繁に使用されるRDBMSの1つです(最も多くはないにしても) 、 Joomla Magento その他。

    この記事では、MySQL / MariaDBのパフォーマンスを微調整するための、基本的でありながら役立つヒントをいくつか紹介します。この記事は、MySQLまたはMariaDBがすでにインストールされていることを前提としていることに注意してください。それでもシステムにインストールする方法がわからない場合は、こちらの広範なガイドに従ってください:

    1. RHEL /CentOS7へのLAMPのインストール
    2. Fedora22へのLAMPのインストール
    3. Ubuntu15.04でのLAMPの設定
    4. Debian8へのMariaDBのインストール
    5. GentooLinuxにMariaDBをインストールする
    6. ArchLinuxにMariaDBをインストールする

    重要 :始める前に–この提案を盲目的に受け入れないでください。 MySQLの設定はそれぞれ固有であり、変更を加える前に追加の検討が必要です。

    知っておくべきこと:

    1. MySQL/MariaDB構成ファイルは/etc/my.cnfにあります 。このファイルを変更するたびに、MySQLサービスを再起動して、新しい変更を有効にする必要があります。
    2. この記事を書くためのMySQLバージョン5.6 テンプレートとして使用されています。

    1。 InnoDBfile-per-tableを有効にする

    まず、 InnoDBについて説明することが重要です。 ストレージエンジンです。 MySQLとMariaDBは、デフォルトのストレージエンジンとしてInnoDBを使用します。以前は、MySQLはデータベーステーブルとインデックスをシステムテーブルスペースに保持するために使用されていました。このアプローチは、唯一の目的がデータベース処理であり、そのストレージディスクが他の目的に使用されていないサーバーを対象としています。

    InnoDBはより柔軟なアプローチを提供し、各データベース情報は.ibdに保持されます データファイル。各.ibd fileは、それ自体のテーブルスペースを表します。そうすれば、「 TRUNCATE」などのデータベース操作が可能になります。 」をより速く完了することができ、データベーステーブルを削除または切り捨てるときに未使用のスペースを再利用することもできます。

    この構成のもう1つの利点は、データベーステーブルの一部を別のストレージデバイスに保持できることです。これにより、 I / Oを大幅に改善できます。 ディスクにロードします。

    innodb_file_per_table MySQL5.6以降ではデフォルトで有効になっています。 /etc/my.cnfで確認できます ファイル。ディレクティブは次のようになります:

    innodb_file_per_table=1
    

    2。 MySQLデータベースデータを別のパーティションに保存する

    注 :このセットアップはMySQLでのみ機能し、MariaDBでは機能しません。

    特に同じハードドライブ上にある場合、OSの読み取り/書き込みによってMySQLサーバーのパフォーマンスが低下することがあります。代わりに、MySQLサービスに別のハードドライブ(できればSSD)を使用することをお勧めします。

    これを完了するには、新しいドライブをコンピューター/サーバーに接続する必要があります。この記事の目的上、ドライブは / dev / sdbの下にあると想定します。 。

    次のステップは、新しいドライブを準備することです:

    # fdisk /dev/sdb
    

    次に「n」を押します 」を使用して、新しいパーティションを作成します。次に「p」を押します 」を使用して、新しいパーティションをプライマリにします。その後、 1〜4のパーティション番号を設定します 。その後、パーティションサイズを選択します。ここでEnterキーを押します。次のステップでは、パーティションのサイズを構成する必要があります。

    ディスク全体を使用する場合は、もう一度Enterキーを押します。それ以外の場合は、新しいパーティションのサイズを手動で設定できます。準備ができたら、「 w」を押します 」を使用して変更を書き込みます。次に、新しいパーティションのファイルシステムを作成する必要があります。これは次の方法で簡単に実行できます:

    # mkfs.ext4 /dev/sdb1
    

    次に、新しいパーティションをフォルダにマウントします。フォルダに「ssd」という名前を付けました 」とルートディレクトリに作成されます:

    # mkdir /ssd/
    

    作成したばかりの新しいパーティションを新しいフォルダにマウントする準備ができました:

    # mount /dev/sdb1  /ssd/
    

    / etc / fstab に次の行を追加することで、起動時にマウントを実行できます。 ファイル。

    /dev/sdb1 /ssd ext3 defaults 0 0
    

    これで、MySQLを新しいディスクに移動する準備が整いました。まず、次のコマンドでMySQLサービスを停止します。

    # service mysqld stop
    

    データベースへの書き込みを防ぐために、Apache/nginxも停止することをお勧めします。

    # service httpd stop
    # service nginx stop
    

    次に、MySQLディレクトリ全体を新しいドライブにコピーします。

    # cp /var/lib/mysql /ssd/ -Rp
    

    MySQLデータベースのサイトによっては、これには時間がかかる場合があります。このプロセスが完了したら、MySQLディレクトリの名前を変更します。

    # mv /var/lib/mysql /var/lib/mysql-backup
    

    次に、シンボリックリンクを作成します。

    # ln -s /ssd/mysql /var/lib/mysql
    

    これで、MySQLとWebサービスを開始する準備が整いました:

    # service mysqld start
    # service httpd start
    # service nginx start
    

    この時点で、MySQLデータベースは新しいドライブからアクセスされます。

    ページ:1 2 3 4
    1. bashスクリプト内からSQLをどのように実行しますか?

    2. 列数が異なる2つのテーブルを結合する

    3. MySQLのインストール:エラー:gemネイティブ拡張のビルドに失敗しました

    4. MySQLでアクセントを削除する方法は?