Heim Datenbank MySQL-Tutorial 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来判断参数是否合理

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Diese Apple-ID wird im iTunes Store noch nicht verwendet: Fix Diese Apple-ID wird im iTunes Store noch nicht verwendet: Fix Jun 10, 2024 pm 05:42 PM

Wenn Sie sich mit der AppleID beim iTunesStore anmelden, wird möglicherweise die Fehlermeldung „Diese AppleID wurde nicht im iTunesStore verwendet“ auf dem Bildschirm angezeigt. Es gibt keine Fehlermeldungen, über die Sie sich Sorgen machen müssen. Sie können sie beheben, indem Sie diese Lösungssätze befolgen. Fix 1 – Lieferadresse ändern Der Hauptgrund, warum diese Aufforderung im iTunes Store erscheint, ist, dass Sie nicht die richtige Adresse in Ihrem AppleID-Profil haben. Schritt 1 – Öffnen Sie zunächst die iPhone-Einstellungen auf Ihrem iPhone. Schritt 2 – AppleID sollte über allen anderen Einstellungen stehen. Also, öffnen Sie es. Schritt 3 – Öffnen Sie dort die Option „Zahlung & Versand“. Schritt 4 – Bestätigen Sie Ihren Zugang mit Face ID. Schritt

So beheben Sie rote Augen auf dem iPhone So beheben Sie rote Augen auf dem iPhone Feb 23, 2024 pm 04:31 PM

Sie haben also auf Ihrer letzten Party einige tolle Fotos gemacht, aber leider waren die meisten Fotos, die Sie gemacht haben, rote Augen. Das Foto selbst ist großartig, aber die roten Augen darin ruinieren das Bild irgendwie. Ganz zu schweigen davon, dass einige dieser Partyfotos möglicherweise von den Handys Ihrer Freunde stammen. Heute schauen wir uns an, wie man rote Augen aus Fotos entfernt. Was verursacht die roten Augen auf dem Foto? Beim Fotografieren mit Blitz kommt es häufig zu roten Augen. Dies liegt daran, dass das Licht des Blitzes direkt in den Augenhintergrund scheint, wodurch die Blutgefäße unter dem Auge das Licht reflektieren, wodurch auf dem Foto der Effekt roter Augen entsteht. Glücklicherweise sind einige Kameras dank der kontinuierlichen Weiterentwicklung der Technologie mittlerweile mit Funktionen zur Rote-Augen-Korrektur ausgestattet, die dieses Problem effektiv lösen können. Mit dieser Funktion nimmt die Kamera Bilder auf

Wie kann das Problem gelöst werden, dass Win11 die Anmeldeinformationen nicht überprüft? Wie kann das Problem gelöst werden, dass Win11 die Anmeldeinformationen nicht überprüft? Jan 30, 2024 pm 02:03 PM

Wenn sich ein Win11-Benutzer mit Anmeldeinformationen anmeldet, erhält er eine Fehlermeldung, dass Ihre Anmeldeinformationen nicht überprüft werden können. Was ist los? Nachdem der Herausgeber dieses Problem untersucht hatte, stellte ich fest, dass es mehrere verschiedene Situationen geben kann, die dieses Problem direkt oder indirekt verursachen. Schauen wir uns das gemeinsam mit dem Herausgeber an.

Umfassender Leitfaden zu PHP 500-Fehlern: Ursachen, Diagnose und Korrekturen Umfassender Leitfaden zu PHP 500-Fehlern: Ursachen, Diagnose und Korrekturen Mar 22, 2024 pm 12:45 PM

Ein umfassender Leitfaden zu PHP500-Fehlern: Ursachen, Diagnose und Korrekturen Während der PHP-Entwicklung stoßen wir häufig auf Fehler mit dem HTTP-Statuscode 500. Dieser Fehler wird normalerweise „500InternalServerError“ genannt, was bedeutet, dass bei der Verarbeitung der Anfrage auf der Serverseite einige unbekannte Fehler aufgetreten sind. In diesem Artikel untersuchen wir die häufigsten Ursachen von PHP500-Fehlern, wie man sie diagnostiziert und behebt und stellen spezifische Codebeispiele als Referenz bereit. Häufige Ursachen für 1.500 Fehler 1.

Eine einfache Anleitung zur Behebung von Windows 11-Bluescreen-Problemen Eine einfache Anleitung zur Behebung von Windows 11-Bluescreen-Problemen Dec 27, 2023 pm 02:26 PM

Viele Freunde stoßen bei der Verwendung von Computer-Betriebssystemen immer auf Bluescreens. Selbst das neueste Win11-System kann dem Schicksal von Bluescreens nicht entkommen. Deshalb habe ich Ihnen heute ein Tutorial zum Reparieren von Win11-Bluescreens gebracht. Unabhängig davon, ob Sie auf einen Bluescreen gestoßen sind oder nicht, können Sie ihn zunächst herausfinden, falls Sie ihn benötigen. So beheben Sie den Win11-Bluescreen-Methode 1. Wenn wir auf einen Bluescreen stoßen, starten Sie zunächst das System neu und prüfen Sie, ob es normal starten kann. 2. Wenn es normal gestartet werden kann, klicken Sie mit der rechten Maustaste auf „Computer“ auf dem Desktop und wählen Sie „Verwalten“ 3. Erweitern Sie dann „Systemprogramme“ auf der linken Seite des Popup-Fensters und wählen Sie „Ereignisanzeige“ 4. Im Mit der Ereignisanzeige können Sie sehen, welches konkrete Problem den Bluescreen verursacht hat. 5. Verfolgen Sie dann einfach die Bluescreen-Situation und die Ereignisse

Die Lautstärke kann in WIN10 nicht angepasst werden Die Lautstärke kann in WIN10 nicht angepasst werden Mar 27, 2024 pm 05:16 PM

1. Drücken Sie win+r, um das Ausführungsfenster zu öffnen, geben Sie [regedit] ein und drücken Sie die Eingabetaste, um den Registrierungseditor zu öffnen. 2. Klicken Sie im geöffneten Registrierungseditor, um [HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRun] zu erweitern. Klicken Sie mit der rechten Maustaste auf die leere Stelle auf der rechten Seite, wählen Sie [Neu – Zeichenfolgenwert] und benennen Sie sie in [systray.exe] um. 3. Doppelklicken Sie, um systray.exe zu öffnen, ändern Sie die numerischen Daten in [C:WindowsSystem32systray.exe] und klicken Sie auf [OK], um die Einstellungen zu speichern.

Die Tabelle „table_name' ist als abgestürzt markiert und sollte repariert werden – So beheben Sie den MySQL-Fehler: Die Tabelle ist als abgestürzt markiert und muss repariert werden Die Tabelle „table_name' ist als abgestürzt markiert und sollte repariert werden – So beheben Sie den MySQL-Fehler: Die Tabelle ist als abgestürzt markiert und muss repariert werden Oct 05, 2023 am 09:25 AM

Titel: Tabelle „Tabellenname“ ist als abgestürzt markiert und sollte repariert werden – So beheben Sie den MySQL-Fehler: Die Tabelle ist als abgestürzt markiert und muss repariert werden. Artikeltext: MySQL ist ein leistungsstarkes relationales Datenbankverwaltungssystem, das auf verschiedenen Websites häufig verwendet wird und Die Anwendung befindet sich in der Entwicklung. Aus verschiedenen Gründen können jedoch manchmal Fehler und Probleme auftreten. In

So lösen Sie das durch csrss.exe verursachte Bluescreen-Problem So lösen Sie das durch csrss.exe verursachte Bluescreen-Problem Dec 28, 2023 pm 06:24 PM

Wenn Ihr Computer nach dem Start häufig einen blauen Bildschirm anzeigt, liegt möglicherweise ein schwerwiegender Fehler (Stoppcode 0xF4) vor, der vom Windows-System in der Datei csrss.exe verursacht wurde. Sehen wir uns nun an, wie wir das Problem beheben können! So beheben Sie den Bluescreen von csrss.exe: Drücken Sie zunächst gleichzeitig die Tasten „Strg+Alt+Entf“. Daraufhin wird die Benutzeroberfläche des Microsoft Windows-Task-Managers angezeigt. Klicken Sie auf die Registerkarte „Task-Manager“. Auf dem Bildschirm werden alle laufenden Programme und die von ihnen belegten Ressourcen sowie weitere Informationen aufgelistet. Klicken Sie erneut, um die Registerkarte „Prozesse“ aufzurufen, klicken Sie erneut auf „Bildname“ und suchen Sie dann die Datei „csrss.exe“ in der Liste. Klicken Sie auf die Schaltfläche „Prozess beenden“.

See all articles