hamada
bungu****@leo*****
2005年 1月 13日 (木) 12:56:06 JST
こんにちわ。 On Tue, 11 Jan 2005 06:34:31 GMT "yasushi,m" <mll****@jbms*****> wrote: > ただ、「myisamchk」の様なユーティリティが、用意されてると言うことは、 > テーブルの破損など、結構頻繁に発生するのかぁ? と、ちと へこんだりし > ています。 myisamchkは、元々テーブル修復ユーティリティーですが、普段はテーブル最適 化ツールとして使います。 # myisamchk -r --sort-index --analyze /var/lib/mysql/database/*.MYI ↑こんな感じ。テーブルを修復(=無駄なデータ領域を削除)してインデックス をソートしてキー配置を解析しなさい、みたいな。 データベースの破損頻度ですが、当方もかつてスペックが貧弱なサーバを使って た時期、ちょこちょことテーブル壊れてました。 だから、今でも時々mysqldを止めて # myisamchk -s /var/lib/mysql/*/*.MYI とやってみる習慣が付いてます。(「黙ってテーブルを調べ、破損があった場合 のみ報告しなさい」というコマンド) が、その後サーバを強力なものに交換(スケールアップ)し、某ソフトのメモリ リーク対策として「定期的にサーバを再起動する」ようにしたここ2年くらい、 破損報告は一度もありません。 mysqldはかなり重いアプリケーションなので、ロードアベレージが高くなってく ると、たまにプロセスがコケて死んじゃうことがあるみたいです。どうもこれが テーブル破損の原因みたい。 (プロセスが死んじゃうと、テーブルを閉じないから) osCに於けるmysqldの負荷はキャッシュを適切に設定する(可能ならメモリを増 設し、mysqldにたっぷり割り振ってやる=ディスクを回さない)ことでかなり軽 減出来ますが、限度が有ります。 ということで、テーブル破損=プロセス死亡事故が続発するようなら、今度はサー バのほうをなんとかしないといけないようで。 --------------------------------- 高橋さんのほうから 「MySQLはトランザクション処理が無いので云々」 というお話しがありましたけど、いまのMySQLはInnoDBを使えばトランザクショ ン処理できますので、 「MyISAMテーブルはトランザクション処理が無いので云々」 ってのが正しい表現だろうと思います。細かいツッコミですが(^_^;) はまだ