1

何度か読み取られるデータ行をキャッシュする方法として、mysql メモリ テーブルを使用しています。私のソリューションでは xcache または memcache を使用できないため、この代替手段を選択しました。このトピックに関するmysqlのマニュアルとフォーラムを読んだ後、テーブルが最大メモリ サイズに達するとエラーが発生するという結論に達しました。テーブルを切り捨ててメモリを解放するために、このエラーをキャッチする方法があるかどうかを知りたいです。使用できるメモリの制限を上げたくありません。テーブルが引き続き機能するように、メモリを自動的に解放する方法が必要です。

ありがとう。

4

2 に答える 2

5

メモリが不足している場合、エンジンは1114次のエラー メッセージでエラーを発生させます。

The table 'table_name' is full

クライアント側でこのエラーをキャッチし、テーブルからいくつかのデータを削除する必要があります。

于 2011-01-25T13:13:05.150 に答える
1

代わりに通常の永続的なテーブルを使用し、固有のキャッシュに依存する必要があります。内容を安全に捨てることができるテーブルの場合、MyISAM は安全なエンジンです (起動するたびに TRUNCATE TABLE を実行できる場合)。代わりに、永久テーブル (InnoDB など) と同じエンジンを使用できます。

とにかく、メモリテーブルは非常に厄介です(リリースされたすべてのMySQLバージョンで、Drizzleやその他のバージョンではより優れています)。行を最大長までパディングするためです。

残念ながら、テーブルごと (またはトランザクションごと) に innodb 耐久性パラメーターを設定することはまだできないため、必要な耐久性をサーバーごとに決定する必要があります。 2 (または 0 でも、ほとんど得られません)

于 2011-01-25T13:19:50.583 に答える