8

現在、MySQLのすべてのデータベースにInnoDBを使用していますが、information_schemaデータベースがMEMORYではないテーブルにMyISAMを使用していることに気付きました。

InnoDB/MyISAMの問題を調査中です。これが原因ではないと思いますが、このミキシングが気になります。データベースは元々MyISAMで設定されていました。その後、my.cnfファイルが更新され、エンジンがInnoDBにリセットされました。MySQL5.5.10を使用しています。

information_schemaデータベースをMyISAMに設定し、他のすべてのデータベースをMySQLに設定すると、発生する可能性のある問題は何ですか?


ヘルプを探している人のために: 答えを探してこの質問に出くわした場合、またはもっと知りたい場合は、デフォルトのデータベースエンジンを確認してください。

show variables;

データベース内のテーブルに割り当てられたエンジンを確認するには、次の手順に従います。

show table status;

私のmy.cnf設定:

[client]
default-character-set=utf8

[mysqld]
log=/usr/local/var/mysql/mysqld.log
character-set-server = utf8
collation-server = utf8_general_ci
lower_case_table_names=2
default_storage_engine=InnoDB

# Performance hacks:
innodb_flush_method=nosync
innodb_flush_log_at_trx_commit=0
4

1 に答える 1

4

使用されるストレージ エンジンはテーブル単位です。新しいテーブルの作成時にデフォルトのストレージ エンジンが使用され、新しいテーブルにストレージ エンジンを指定しない場合。

デフォルトのストレージ エンジンの設定に関係なく、システム テーブルは MyISAM でした。

MySQLのドキュメントから:

重要

mysql データベース内の MySQL システム テーブル (ユーザーやホストなど) を InnoDB タイプに変換しないでください。これはサポートされていない操作です。システム テーブルは、常に MyISAM タイプである必要があります。

information_schema テーブルを直接クエリしていない場合は、型が混在していても問題ありません。

于 2012-04-24T20:06:04.677 に答える