「使用」後にMySQLデータベースがフリーズする


17

私は最近、かなり愚かな間違いを犯し、Ubuntuのインストールを破損しました。それを解決するために、ライブCDで起動し、データベースファイルをコピーしました。しかし、今では古いインストールから新しいインストールにフォルダーをコピーしました。「use database_name」と入力するたびに、これでフリーズします:

mysql> use my_database_name;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

そして、ターミナルを与えずにフリーズします。

回答:


28

ログイン後の最初の「使用」コマンドで、MySQLはデータベース、テーブル、およびカラム名をスキャンして自動補完します。多くのdb、テーブルがある場合、時間がかかることがあります。

これを回避するには、-Aオプション(または--no-auto-rehash)を使用してクライアントを起動します

mysql -uroot -p -A

完全に無効にしたい場合は、my.cnf([mysql]セクション)にdisable_auto_rehash変数を追加することもできます。この変更には再起動は必要ありません(サーバーではなくクライアント変数です)。


〜2.5GiBデータベースでは「しばらく」1日以上かかる場合がありますか、それとも不当に長いですか?
明id

2

私の場合、「テーブル情報の読み取り」には不合理な時間がかかっていました。実行したときにmysql -e 'show processlist'、「ハング」しているプロセスが「テーブルメタデータロックの待機」であることがわかりました。私はcreate table from select ...別の場所で実行されているフォームの長時間実行クエリがあるため、これは何らかの意味がありました。そのため、あるレベルでは、新しいテーブルの作成が完了するまで、テーブルに関するメタデータは利用できないことを理解できました。(もし可能なら、オートコンプリートスキャンでメタデータクエリから「不完全な」テーブルを省略した方が望ましいと思います。)


0

📌

他のシステムからデータベース全体コピーする場合

/ var / lib / mysql / *

あなたは可能のchown -R mysqlの:mysqlのは/ var / libに/ mysqlの/ *と再びサービスを開始します。

☝これで問題が解決しました👊


2
DBA Stack Exchangeへようこそ!これを引用としてフォーマットしました。他の場所からこのソリューションを本当に入手した場合は、ソースを提供する必要があります。そうでない場合は、フォーマットを削除してください。
グローフィンデル
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.