【MySQL/MariaDB/Percona】Percona ServerでXtraDBとTokuDBを使い分ける

2024-07-01

Percona で XtraDB と TokuDB を使用する

XtraDB と TokuDB は、Percona Server で利用可能な 2 つの高性能ストレージエンジンです。それぞれ異なる特性を持ち、ワークロードによって最適なエンジンが異なってきます。

XtraDB は、InnoDB の改良版であり、Percona Server のデフォルトストレージエンジンです。InnoDB との互換性が高く、高いトランザクション処理能力と安定性を備えています。

TokuDB は、高速なキーバリューストアエンジンです。XtraDB よりも高い読み取り性能と書き込み性能を備え、データ分析や OLTP アプリケーションに適しています。

どちらのエンジンを使用すべきか

最適なエンジンは、ワークロードによって異なります。

  • トランザクション処理中心のワークロード: XtraDB
  • データ分析や OLTP アプリケーション: TokuDB

Percona で XtraDB と TokuDB を使用する

Percona Server で XtraDB と TokuDB を使用するには、以下の手順が必要です。

Percona Server は、公式サイトからダウンロードできます。

XtraDB または TokuDB を有効にするには、以下のいずれかの方法を使用できます。

  • Percona Server の設定ファイルを変更する
  • MySQL クライアントを使用してコマンドを実行する

テーブルを作成するには、以下のいずれかのコマンドを使用します。

  • XtraDB テーブルを作成する: CREATE TABLE ... ENGINE=InnoDB

    以下の例は、Percona Server で TokuDB テーブルを作成する方法を示しています。

    CREATE TABLE my_table (
      id INT PRIMARY KEY AUTO_INCREMENT,
      name VARCHAR(255) NOT NULL,
      email VARCHAR(255) NOT NULL
    ) ENGINE=TokuDB;
    

    この例では、my_table という名前のテーブルを作成します。このテーブルには、idnameemail という 3 つの列があります。id 列は主キーであり、自動的にインクリメントされます。name 列と email 列は必須です。このテーブルは TokuDB エンジンを使用して作成されます。

    このチュートリアルでは、Percona Server で XtraDB と TokuDB を使用する基本的な方法について説明しました。詳細については、Percona Server のドキュメントを参照してください。




    Percona Server で XtraDB と TokuDB を使用するサンプルコード

    • Percona Server をインストールして起動します。
    • XtraDB と TokuDB の両方のエンジンを使用して、2 つのテーブルを作成します。
    • 各テーブルにデータを挿入します。
    • テーブルを削除します。

    前提条件

    この例を実行するには、以下のものが必要です。

    • MySQL クライアントがインストールされている

    手順

    1. 以下のコマンドを使用して、Percona Server を起動します。
    sudo service percona-server start
    
    1. 以下のコマンドを使用して、MySQL クライアントに接続します。
    mysql -u root -p
    
    1. 以下のコマンドを使用して、XtraDB テーブルを作成します。
    CREATE TABLE xtradb_table (
      id INT PRIMARY KEY AUTO_INCREMENT,
      name VARCHAR(255) NOT NULL,
      email VARCHAR(255) NOT NULL
    ) ENGINE=InnoDB;
    
      CREATE TABLE tokudb_table (
        id INT PRIMARY KEY AUTO_INCREMENT,
        name VARCHAR(255) NOT NULL,
        email VARCHAR(255) NOT NULL
      ) ENGINE=TokuDB;
      
        INSERT INTO xtradb_table (name, email) VALUES ('John Doe', '[email protected]');
        INSERT INTO xtradb_table (name, email) VALUES ('Jane Doe', '[email protected]');
        
          INSERT INTO tokudb_table (name, email) VALUES ('John Doe', '[email protected]');
          INSERT INTO tokudb_table (name, email) VALUES ('Jane Doe', '[email protected]');
          
            SELECT * FROM xtradb_table;
            
              SELECT * FROM tokudb_table;
              
                DROP TABLE xtradb_table;
                
                  DROP TABLE tokudb_table;
                  
                    quit
                    
                      sudo service percona-server stop
                      

                      補足

                      • この例では、2 つのシンプルなテーブルを使用しています。実際のアプリケーションでは、より複雑なテーブル構造を使用する可能性があります。
                      • この例では、基本的な INSERT、SELECT、DROP 操作のみを使用しています。実際のアプリケーションでは、UPDATE、DELETE、およびその他の操作を使用する可能性があります。
                      • この例では、MySQL クライアントを使用してコマンドを実行しています。Percona Server を管理するには、MySQL Workbench などのグラフィカルツールを使用することもできます。



                      Percona Server で XtraDB と TokuDB を使用するその他の方法

                      Percona Server for MySQL オペレーターは、Kubernetes で Percona Server をデプロイおよび管理するためのオープンソースオペレーターです。オペレーターを使用して、XtraDB または TokuDB を使用するように Percona Server を構成できます。

                      Docker コンテナーを使用して、XtraDB または TokuDB を含む Percona Server をデプロイできます。

                      Ansible または Chef などの構成管理ツールを使用して、XtraDB または TokuDB を使用するように Percona Server を構成できます。

                      Percona Platform は、データベースのパフォーマンスと可用性を向上させるために設計された商用製品スイートです。Percona Platform には、XtraDB と TokuDB を含む Percona Server をデプロイおよび管理するためのツールが含まれています。

                      最適な方法を選択するには

                      • シンプルで使いやすい方法が必要な場合: Percona Server for MySQL オペレーターまたは Docker コンテナーを使用します。
                      • より多くの制御と柔軟性が必要な場合: Ansible または Chef などの構成管理ツールを使用します。
                      • エンタープライズ向けのサポートと機能が必要な場合: Percona Platform を使用します。

                        mysql mariadb percona


                        MySQLのパフォーマンスを劇的に向上させる!Profiler ツールの使い方

                        MySQL には、いくつかの Profiler ツールがあります。MySQL Profiler:MySQL に組み込まれたツールです。クエリの実行時間、スキャンされた行数、使用されたメモリなど、クエリのパフォーマンスに関する情報を収集します。...


                        MariaDB on Windows - データベースエンジン起動エラーのトラブルシューティングガイド

                        MariaDB on Windowsでデータベースエンジンを起動しようとすると、エラーが発生する可能性があります。このエラーは、さまざまな原因によって発生する可能性があり、解決方法も原因によって異なります。原因エラーが発生する原因として、以下の例が挙げられます。...


                        MariaDB: SHOW GRANTS FOR USER はテーブルレベル権限を表示しない?

                        MariaDB で SHOW GRANTS FOR USER コマンドを実行すると、ユーザーに付与されたデータベースレベルの権限のみが表示され、テーブルレベルの権限は表示されない。原因SHOW GRANTS FOR USER は、ユーザーに付与された データベースレベルの権限 のみを表示するように設計されています。テーブルレベル権限は、GRANT ステートメントを使用して個別に付与され、SHOW GRANTS FOR USER では表示されないためです。...


                        MariaDB: 複数テーブル更新で1行が複数回更新されない理由と解決策

                        MariaDBで複数のテーブルを更新する場合、WHERE句で条件を指定した行のみが更新されます。例この例では、orders. id が 123 である注文に関連する顧客情報が更新されます。しかし、WHERE句の条件に複数回一致する行があった場合、各行は1回しか更新されません。...


                        MariaDBで発生する「wrong syntax to use near 'declare exists_check int'」エラーの原因と解決方法

                        原因:このエラーメッセージは、DECLARE ステートメントの構文に誤りがあることを示しています。DECLARE ステートメントは、変数やカーソルなどのデータベースオブジェクトを宣言するために使用されます。このエラーが発生する最も一般的な原因は、以下のいずれかです。...


                        SQL SQL SQL SQL Amazon で見る



                        パラメータ化されたクエリでSQLインジェクションを防ぐ

                        SQLインジェクションは、Webアプリケーションにおける最も深刻な脆弱性の1つです。攻撃者は、悪意のあるコードをデータベースに注入することで、データの窃取、改ざん、削除などを行うことができます。対策方法PHPでSQLインジェクションを防ぐには、以下の方法があります。


                        知らなかったでは済まされない!MySQLのDATETIMEとTIMESTAMPの落とし穴

                        答え: どちらを使用するかは、以下の要件によって異なります。格納したい日時範囲DATETIME: 1000-01-01 00:00:00 から 9999-12-31 23:59:59. 999999 までTIMESTAMP: 1970-01-01 00:00:01 から 2038-01-19 03:14:07 まで


                        データベースの整合性を保つ!MySQLで既存のテーブルに外部キーを追加する方法

                        既存のテーブルに外部キーを追加する ことは、データの整合性を維持し、データベーススキーマをより明確にするために重要です。MySQL で既存のテーブルに外部キーを追加するには、以下の手順に従います。外部キー制約を定義するまず、ALTER TABLE ステートメントを使用して、外部キー制約を定義する必要があります。


                        PHPで安全なデータベース接続を行うためのベストプラクティス

                        代わりに、以下の理由により、PDOやmysqliといった新しい関数を使うことを強く推奨します。非推奨・削除mysql_*関数は非推奨であり、将来のPHPバージョンで完全に削除される可能性があります。PHP 7.0では既に削除されており、古いバージョンのPHPを使っている場合でも、将来的に新しいバージョンに移行する際に問題が発生する可能性があります。