ホームページ データベース mysql チュートリアル TableCache设置过小造成MyISAM频繁损坏_MySQL

TableCache设置过小造成MyISAM频繁损坏_MySQL

Jun 01, 2016 pm 01:51 PM
修理 どうやって 数据库服务

转自老王的博客

前些天说了一下如何修复损坏的MyISAM表,可惜只会修复并不能脱离被动的境地,只有查明了故障原因才会一劳永逸。

如果数据库服务非正常关闭(比如说进程被杀,服务器断电等等),并且此时恰好正在更新MyISAM表,那么发生损坏的概率就比较大。今天我要说的是另一种情况:频繁的打开关闭MyISAM表文件造成MyISAM表损坏。

什么时候会出现频繁的打开关闭MyISAM表文件的情况呢?

先查看当前系统的table_cache设置,它的作用就是缓存表文件描述符,降低打开关闭表的频率,如果这个参数设置得过小,那么很快就会被占满,再有新请求过来的时候,就不得不关闭一些已打开的表以便为新请求腾出空间,从而出现频繁的打开关闭MyISAM表文件的情况:

mysql> show variables like 'table%';

再查看当前系统的打开表的情况:

mysql> show status like 'open%';

有两项关键的结果:Open_tables和Opened_tables,他们的名字类似,其含义的区别在于:

Open_tables:表示当前打开的表数目。
Opened_tables:表示累计已经打开的表数目。

那么如何判断table_cache是否设置合理呢?其判断尺度如下:

如果Opened_tables远大于Open_tables,并且Open_tables很接近table_cache,那么就说明table_cache偏小。

还要注意设置操作系统的参数,因为即便你把table_cache设置得很大,一旦超过了操作系统的限制也没用,可以按如下方法查询当前值:

ulimit -n

设置方法也很简单,比如设置成8k,可以这样:

vi /etc/security/limits.conf

* hard nofile 8192
* soft nofile 8192

这样设定比在/etc/rc.local里设定ulimit -n 8192更合理一些(参考链接)。

MySQL运行稳定后,查看open_files_limit参数:

mysql> show variables like '%open%';

在大量使用MyISAM的环境里,应该保证open_files_limit表类型至少是table_cache的二到三倍,这是因为每个MyISAM表都包括三个文件:一个表定义文件,一个表索引文件,一个表数据文件,详细介绍可以参考文档。而在Innodb的环境里,一个表只有一个文件,明白这些基本知识对解决问题很有帮助。

具体的数据库文件打开情况可以用lsof来查看:

lsof | grep MYI 或者 lsof | grep MYD

可以发现索引文件描述符是客户端共享的,数据文件则不是,你可以这样确认这一点:

lsof | egrep -i 'myd|myi' | awk '{++state[$NF]} END {for(key in state) print state[key], "/t", key}' | sort -nr

为了保险点,或许还要查查内核的相关参数,比如fs.file-max,这些细节往往会影响到MySQL:

sysctl -a | grep "file"

注意到以上这些因素,问题差不多就能解决了。不过还要注意一点,table cache不是越大越好:

http://www.freshbooks.com/blog/2008/09/09/now-were-flying/
http://www.mysqlperformanceblog.com/2009/11/16/table_cache-negative-scalability/
http://www.mysqlperformanceblog.com/2009/11/26/more-on-table_cache/

BTW:如果你比较懒惰,也可以用MySQL Performance Tuning Primer Script来判断参数是否合理

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

この Apple ID は iTunes Store でまだ使用されていません: 修正 この Apple ID は iTunes Store でまだ使用されていません: 修正 Jun 10, 2024 pm 05:42 PM

AppleIDを使用してiTunesStoreにログインすると、「このAppleIDはiTunesStoreで使用されていません」というエラーが画面に表示される場合があります。心配するようなエラー メッセージはありません。これらのソリューション セットに従って問題を修正できます。解決策 1 – 配送先住所を変更する iTunes Store にこのプロンプトが表示される主な理由は、AppleID プロファイルに正しい住所がないことです。ステップ 1 – まず、iPhone で iPhone 設定を開きます。ステップ 2 – AppleID は他のすべての設定の最上位にある必要があります。それで、開けてください。ステップ 3 – そこに到達したら、「支払いと配送」オプションを開きます。ステップ 4 – Face ID を使用してアクセスを確認します。ステップ

iPhoneの赤目を修正する方法 iPhoneの赤目を修正する方法 Feb 23, 2024 pm 04:31 PM

前回のパーティーでは素晴らしい写真をいくつか撮ったのですが、残念ながら、撮った写真のほとんどが赤目でした。写真自体は素晴らしいのですが、赤い目が写っているとイメージが台無しになってしまいます。言うまでもなく、パーティーの写真の中には友達の携帯電話からのものもあるかもしれません。今回は写真から赤目を除去する方法を見てみましょう。写真の目が赤い原因は何ですか?フラッシュを使用して写真を撮影すると、赤目が発生することがよくあります。これは、フラッシュの光が目の奥に直接当たるため、目の下の血管が光を反射し、目が赤く写ってしまうためです。幸いなことに、技術の継続的な進歩により、一部のカメラにはこの問題を効果的に解決できる赤目補正機能が搭載されています。この機能を使用すると、カメラは写真を撮影します

Win11 が資格情報の検証に失敗する問題を解決するにはどうすればよいですか? Win11 が資格情報の検証に失敗する問題を解決するにはどうすればよいですか? Jan 30, 2024 pm 02:03 PM

Win11 ユーザーが資格情報を使用してログインすると、資格情報を検証できないことを示すエラー メッセージが表示されます。何が起こっているのでしょうか?編集者がこの問題を調査した結果、この問題を直接的または間接的に引き起こすいくつかの状況が考えられることがわかりました。編集者と一緒に見てみましょう。

PHP 500 エラーの総合ガイド: 原因、診断、修正 PHP 500 エラーの総合ガイド: 原因、診断、修正 Mar 22, 2024 pm 12:45 PM

PHP 500 エラーの包括的なガイド: 原因、診断、および修正 PHP 開発中に、HTTP ステータス コード 500 のエラーが頻繁に発生します。このエラーは通常「500InternalServerError」と呼ばれ、サーバー側でのリクエストの処理中に不明なエラーが発生したことを意味します。この記事では、PHP500 エラーの一般的な原因、診断方法、修正方法を検討し、参照用の具体的なコード例を示します。 1.500 エラーの一般的な原因 1.

Windows 11 のブルー スクリーンの問題を解決するための簡単なガイド Windows 11 のブルー スクリーンの問題を解決するための簡単なガイド Dec 27, 2023 pm 02:26 PM

多くの友人は、コンピューターのオペレーティング システムを使用するときに常にブルー スクリーンに遭遇します。最新の win11 システムでもブルー スクリーンの運命から逃れることはできません。そこで、今日は win11 のブルー スクリーンを修復する方法についてのチュートリアルをお届けしました。ブルー スクリーンに遭遇したかどうかに関係なく、必要な場合に備えて最初にそれを学ぶことができます。 win11 ブルースクリーンを修正する方法 方法 1. ブルースクリーンが発生した場合は、まずシステムを再起動し、正常に起動できるかどうかを確認します。 2. 正常に起動できる場合は、デスクトップ上の「コンピュータ」を右クリックし、「管理」を選択します。 3. 次に、ポップアップウィンドウの左側にある「システムツール」を展開し、「イベントビューア」を選択します。イベント ビューアを使用すると、ブルー スクリーンの原因となった特定の問題がわかります。 5. 次に、ブルー スクリーンの状況とイベントに従ってください。

WIN10で音量調整ができない時の対処法 WIN10で音量調整ができない時の対処法 Mar 27, 2024 pm 05:16 PM

1. win + r キーを押してファイル名を指定して実行ウィンドウを開き、「regedit」と入力して Enter キーを押してレジストリ エディターを開きます。 2. 開いたレジストリエディタで[HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRun]をクリックして展開し、右側の空白部分を右クリックして[新規 - 文字列値]を選択し、名前を[systray.exe]に変更します。 3. systray.exeをダブルクリックして開き、数値データを「C:WindowsSystem32systray.exe」に変更し、[OK]をクリックして設定を保存します。

テーブル 'table_name' はクラッシュ済みとしてマークされているため、修復する必要があります - MySQL エラーを解決する方法: テーブルはクラッシュ済みとしてマークされており、修復する必要があります テーブル 'table_name' はクラッシュ済みとしてマークされているため、修復する必要があります - MySQL エラーを解決する方法: テーブルはクラッシュ済みとしてマークされており、修復する必要があります Oct 05, 2023 am 09:25 AM

タイトル: Table'table_name'ismarkedascrashedandShouldberepaired-MySQL エラーの解決方法: The table is marked as crashed and need to be Repaired. Specific code models are required. 記事本文: MySQL は、さまざまな Web サイトで広く使用されている強力なリレーショナル データベース管理システムです。およびアプリケーションは開発中です。ただし、さまざまな理由により、エラーや問題が発生する場合があります。で

iPhoneが機内モードでスタックする:それを修正する方法 iPhoneが機内モードでスタックする:それを修正する方法 Jun 15, 2024 pm 02:16 PM

機内モードは状況によっては非常に便利です。ただし、同じ機内モードでも、iPhone が突然オンになってしまうと、頭痛がする可能性があります。この記事では、iPhone の機内モードを解除するための一連のソリューションを設計しました。簡単な解決策 – 1. コントロール センターから直接機内モードを無効にしてみてください。 2. コントロール センターから機内モードを無効にできない場合は、[設定] タブから直接機内モードを無効にできます。これらのヒントが機能しない場合は、以下の修正に従って問題を解決してください。解決策 1 – デバイスを強制的に再起動する デバイスを強制的に再起動するプロセスは非常に簡単です。あなたがしなければならないのは、これらの段階的な指示に従うことだけです。ステップ 1 – 音量を上げるボタンを押して放すと、プロセスを開始できます。ステップ

See all articles