web-dev-qa-db-ja.com

すべてのテーブルでMariaDB MEMORYストレージエンジンを有効にする方法はありますか?

私はすべてのテーブルにMEMORYストレージエンジンを使用したいので、MariaDBを初めて使用することに興味があります。 mariadb.comのメモリストレージエンジン を読んだところ、作成時にストレージエンジンを指定する必要があったようです。

私が欲しいのは、インスタンス上のすべてのテーブルに対してMEMORYストレージエンジンを有効にする単一のコマンドを実行することです。とにかくそれを達成することはできますか?

1
Anonymous

あなたが対処しなければならない2つの状況があります

状況#1:作成するテーブル

これをmy.cnfに追加する必要があります

[mysqld]
default-storage-engine=MEMORY

次に、mysql(MariaDB)を再起動します。

警告:これは既存のテーブルをMEMORYテーブルに変換しません。

これらの既存のテーブルに対して何ができるでしょうか?

状況#2:すでに存在するテーブル

すべてのテーブルをMEMORYテーブルに変換するスクリプトは次のとおりです。

SQLSCRIPT=/root/Convert_To_MEMORY.sql
echo "SET SQL_LOG_BIN = 0;" > 
MYSQL_CONN="-u... -p..."
SQL="SELECT CONCAT('ALTER TABLE ',table_schema,'.',table_name,' ENGINE=MEMORY;')"
SQL="${SQL} ConversionSQL FROM information_schema.tables WHERE engine='InnoDB'"
SQL="${SQL} AND table_schema NOT IN ('information_schema','mysql','performance_schema')"
mysql ${MYSQL_CONN} -AN -e"${SQL}" > ${SQLSCRIPT}
less ${SQLSCRIPT}

SQLスクリプトの内容に満足している場合は、MariaDBにログインして実行します。

mysql> source /root/Convert_To_MEMORY.sql

エピローグ

MEMORYテーブルとしてすべてを使用するためにすべき2つの主要なことを説明しましたが、MEMORYテーブルを使用することの良い点、悪い点、および醜い点に関する私の古い投稿を読む必要があります。

2
RolandoMySQLDBA

私はこれをアーカイブする2つの方法を見つけました。最初のものはターミナルを使用しています。 ( MySQLのデフォルトストレージエンジンの変更 に基づく)

  1. を使用してmy.cnfを編集します

    vi /etc/my.cnf
    
  2. ファイルの最後にこれらの2行を追加します。

    [mysqld]
    default-storage-engine=MEMORY
    
  3. MariaDBを再起動します

    Sudo /etc/init.d/mysql stop
    Sudo /etc/init.d/mysql start
    

これを行う2番目の方法は、 HeidiSQL であるGUIツールを使用することです。

0
Anonymous