Heim Datenbank MySQL-Tutorial MySQL优化必须调整的10项配置_MySQL

MySQL优化必须调整的10项配置_MySQL

Jun 01, 2016 pm 01:18 PM
Artikel

bitsCN.com

当我们被人雇来监测MySQL性能时,人们希望我们能够检视一下MySQL配置然后给出一些提高建议。许多人在事后都非常惊讶,因为我们建议他们仅仅改动几个设置,即使是这里有好几百个配置项。这篇文章的目的在于给你一份非常重要的配置项清单。

我们曾在几年前在博客里给出了这样的建议,但是MySQL的世界变化实在太快了!
写在开始前…
即使是经验老道的人也会犯错,会引起很多麻烦。所以在盲目的运用这些推荐之前,请记住下面的内容:

一次只改变一个设置!这是测试改变是否有益的唯一方法。

大多数配置能在运行时使用SET GLOBAL改变。这是非常便捷的方法它能使你在出问题后快速撤销变更。但是,要永久生效你需要在配置文件里做出改动。

一个变更即使重启了MySQL也没起作用?请确定你使用了正确的配置文件。请确定你把配置放在了正确的区域内(所有这篇文章提到的配置都属于 [mysqld])

服务器在改动一个配置后启不来了:请确定你使用了正确的单位。例如,innodb_buffer_pool_size的单位是MB而max_connection是没有单位的。

不要在一个配置文件里出现重复的配置项。如果你想追踪改动,请使用版本控制。

不要用天真的计算方法,例如”现在我的服务器的内存是之前的2倍,所以我得把所有数值都改成之前的2倍“。

基本配置
你需要经常察看以下3个配置项。不然,可能很快就会出问题。

innodb_buffer_pool_size:这是你安装完InnoDB后第一个应该设置的选项。缓冲池是数据和索引缓存的地方:这个值越大越好,这能保证你在大多数的读取操作时使用的是内存而不是硬盘。典型的值是5-6GB(8GB内存),20-25GB(32GB内存),100-120GB(128GB内存)。

innodb_log_file_size:这是redo日志的大小。redo日志被用于确保写操作快速而可靠并且在崩溃时恢复。一直到MySQL 5.1,它都难于调整,因为一方面你想让它更大来提高性能,另一方面你想让它更小来使得崩溃后更快恢复。幸运的是从MySQL 5.5之后,崩溃恢复的性能的到了很大提升,这样你就可以同时拥有较高的写入性能和崩溃恢复性能了。一直到MySQL 5.5,redo日志的总尺寸被限定在4GB(默认可以有2个log文件)。这在MySQL 5.6里被提高。

一开始就把innodb_log_file_size设置成512M(这样有1GB的redo日志)会使你有充裕的写操作空间。如果你知道你的应用程序需要频繁的写入数据并且你使用的时MySQL 5.6,你可以一开始就把它这是成4G。

max_connections:如果你经常看到‘Too many connections'错误,是因为max_connections的值太低了。这非常常见因为应用程序没有正确的关闭数据库连接,你需要比默认的151连接数更大的值。max_connection值被设高了(例如1000或更高)之后一个主要缺陷是当服务器运行1000个或更高的活动事务时会变的没有响应。在应用程序里使用连接池或者在MySQL里使用进程池有助于解决这一问题。
InnoDB配置
从MySQL 5.5版本开始,InnoDB就是默认的存储引擎并且它比任何其他存储引擎的使用都要多得多。那也是为什么它需要小心配置的原因。

innodb_file_per_table:这项设置告知InnoDB是否需要将所有表的数据和索引存放在共享表空间里(innodb_file_per_table = OFF) 或者为每张表的数据单独放在一个.ibd文件(innodb_file_per_table = ON)。每张表一个文件允许你在drop、truncate或者rebuild表时回收磁盘空间。这对于一些高级特性也是有必要的,比如数据压缩。但是它不会带来任何性能收益。你不想让每张表一个文件的主要场景是:有非常多的表(比如10k+)。

MySQL 5.6中,这个属性默认值是ON,因此大部分情况下你什么都不需要做。对于之前的版本你必需在加载数据之前将这个属性设置为ON,因为它只对新创建的表有影响。

innodb_flush_log_at_trx_commit:默认值为1,表示InnoDB完全支持ACID特性。当你的主要关注点是数据安全的时候这个值是最合适的,比如在一个主节点上。但是对于磁盘(读写)速度较慢的系统,它会带来很巨大的开销,因为每次将改变flush到redo日志都需要额外的fsyncs。将它的值设置为2会导致不太可靠(reliable)因为提交的事务仅仅每秒才flush一次到redo日志,但对于一些场景是可以接受的,比如对于主节点的备份节点这个值是可以接受的。如果值为0速度就更快了,但在系统崩溃时可能丢失一些数据:只适用于备份节点。

innodb_flush_method: 这项配置决定了数据和日志写入硬盘的方式。一般来说,如果你有硬件RAID控制器,并且其独立缓存采用write-back机制,并有着电池断电保护,那么应该设置配置为O_DIRECT;否则,大多数情况下应将其设为fdatasync(默认值)。sysbench是一个可以帮助你决定这个选项的好工具。

innodb_log_buffer_size: 这项配置决定了为尚未执行的事务分配的缓存。其默认值(1MB)一般来说已经够用了,但是如果你的事务中包含有二进制大对象或者大文本字段的话,这点缓存很快就会被填满并触发额外的I/O操作。看看Innodb_log_waits状态变量,如果它不是0,增加innodb_log_buffer_size。
其他设置
query_cache_size: query cache(查询缓存)是一个众所周知的瓶颈,甚至在并发并不多的时候也是如此。 最佳选项是将其从一开始就停用,设置query_cache_size = 0(现在MySQL 5.6的默认值)并利用其他方法加速查询:优化索引、增加拷贝分散负载或者启用额外的缓存(比如memcache或redis)。如果你已经为你的应用启用了query cache并且还没有发现任何问题,query cache可能对你有用。这是如果你想停用它,那就得小心了。

log_bin:如果你想让数据库服务器充当主节点的备份节点,那么开启二进制日志是必须的。如果这么做了之后,还别忘了设置server_id为一个唯一的值。就算只有一个服务器,如果你想做基于时间点的数据恢复,这(开启二进制日志)也是很有用的:从你最近的备份中恢复(全量备份),并应用二进制日志中的修改(增量备份)。二进制日志一旦创建就将永久保存。所以如果你不想让磁盘空间耗尽,你可以用 PURGE BINARY LOGS 来清除旧文件,或者设置 expire_logs_days 来指定过多少天日志将被自动清除。

记录二进制日志不是没有开销的,所以如果你在一个非主节点的复制节点上不需要它的话,那么建议关闭这个选项。

skip_name_resolve:当客户端连接数据库服务器时,服务器会进行主机名解析,并且当DNS很慢时,建立连接也会很慢。因此建议在启动服务器时关闭skip_name_resolve选项而不进行DNS查找。唯一的局限是之后GRANT语句中只能使用IP地址了,因此在添加这项设置到一个已有系统中必须格外小心。

总结

当然还有其他的设置可以起作用,取决于你的负载或硬件:在慢内存和快磁盘、高并发和写密集型负载情况下,你将需要特殊的调整。然而这里的目标是使得你可以快速地获得一个稳健的MySQL配置,而不用花费太多时间在调整一些无关紧要的MySQL设置或读文档找出哪些设置对你来说很重要上。

bitsCN.com
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

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
2 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Repo: Wie man Teamkollegen wiederbelebt
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Abenteuer: Wie man riesige Samen bekommt
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

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)

Wie kann ich Geld verdienen, indem ich heute Artikel auf Toutiao veröffentliche? Wie Sie noch heute mehr Einkommen erzielen, indem Sie Artikel auf Toutiao veröffentlichen! Wie kann ich Geld verdienen, indem ich heute Artikel auf Toutiao veröffentliche? Wie Sie noch heute mehr Einkommen erzielen, indem Sie Artikel auf Toutiao veröffentlichen! Mar 15, 2024 pm 04:13 PM

1. Wie können Sie heute Geld verdienen, indem Sie Artikel auf Toutiao veröffentlichen? Wie Sie noch heute mehr Einkommen erzielen, indem Sie Artikel auf Toutiao veröffentlichen! 1. Grundlegende Rechte und Interessen aktivieren: Originalartikel können durch Werbung Gewinne erzielen, und Videos müssen im horizontalen Bildschirmmodus original sein, um Gewinne zu erzielen. 2. Aktivieren Sie die Rechte von 100 Fans: Wenn die Anzahl der Fans 100 Fans oder mehr erreicht, können Sie Gewinne aus Mikroschlagzeilen, origineller Q&A-Erstellung und Q&A erzielen. 3. Bestehen Sie auf Originalwerken: Originalwerke umfassen Artikel, Mikroschlagzeilen, Fragen usw. und müssen mehr als 300 Wörter umfassen. Bitte beachten Sie, dass bei der Veröffentlichung rechtswidrig plagiierter Werke als Originalwerke Kreditpunkte abgezogen werden und ggf. auch Gewinne abgezogen werden. 4. Vertikalität: Wenn Sie Artikel in Berufsfeldern schreiben, können Sie nicht nach Belieben Artikel über verschiedene Fachgebiete hinweg schreiben. Sie werden keine entsprechenden Empfehlungen erhalten, Sie werden nicht in der Lage sein, die Professionalität und Verfeinerung Ihrer Arbeit zu erreichen, und es wird schwierig sein, Fans zu gewinnen und Leser. 5. Aktivität: hohe Aktivität,

Interpretation des neuen Artikels von Vitalik: Warum gerät Rollup, dessen Blob-Speicherplatz nicht effizient genutzt wird, in Entwicklungsschwierigkeiten? Interpretation des neuen Artikels von Vitalik: Warum gerät Rollup, dessen Blob-Speicherplatz nicht effizient genutzt wird, in Entwicklungsschwierigkeiten? Apr 01, 2024 pm 08:16 PM

Wie sind die Gedanken des neuen Artikels von @VitalikButerin zur Expansion von Ethereum zu verstehen? Manche Leute sagen, dass Vitaliks Auftrag für die Blob-Inschrift unverschämt ist. Wie funktionieren Blob-Pakete? Warum wird der Blob-Speicherplatz nach dem Upgrade in Cancun nicht effizient genutzt? DAS-Datenverfügbarkeitsstichprobe zur Vorbereitung auf das Sharding? Meiner Meinung nach ist die Leistung von Cancun nach dem Upgrade nutzbar, und Vitalik ist besorgt über die Entwicklung von Rollup. Warum? Lassen Sie mich als Nächstes über mein Verständnis sprechen: Wie bereits mehrfach erläutert, handelt es sich bei Blob um ein temporäres Datenpaket, das von den EVM-Aufrufdaten entkoppelt ist und direkt von der Konsensschicht aufgerufen werden kann. Der direkte Vorteil besteht darin, dass EVM nicht auf den Blob zugreifen muss bei der Ausführung von Transaktionen, was zu Berechnungen auf niedrigerer Ausführungsebene führt

Detaillierte Methode zum gleichzeitigen Versenden von Artikeln und Aufzeichnungen über WeChat Detaillierte Methode zum gleichzeitigen Versenden von Artikeln und Aufzeichnungen über WeChat Mar 26, 2024 am 09:16 AM

1. Öffnen Sie Ihr Telefon, klicken Sie auf die WeChat-Software und geben Sie die Einstellungen für die WeChat-Startseite ein. 2. Suchen Sie in der unteren rechten Ecke von WeChat nach [Mein], öffnen Sie es und rufen Sie die Seite [Mein] auf. 3. Klicken Sie auf Sammlung und öffnen Sie dann eine neue Seite.

Wie füge ich einen Artikel in HTML5 hinzu? Wie füge ich einen Artikel in HTML5 hinzu? Sep 12, 2023 am 11:37 AM

In diesem Artikel erfahren Sie, wie Sie Artikel in HTML5 hinzufügen. Eines der neuen Segmentierungselemente in HTML5 ist das Tag. Artikel werden in HTML mithilfe von Tags dargestellt. Genauer gesagt unterscheidet sich der in dem Element enthaltene Inhalt vom restlichen Inhalt der Website (auch wenn diese möglicherweise verwandt sind). Betrachten wir das folgende Beispiel, um zu verstehen, wie man einen Artikel in HTML5 hinzufügt. Beispiel 1 Im folgenden Beispiel verwenden wir Inline-Stile im Artikelelement. <!DOCTYPEhtml><html><body><articlestyle="width:300px;border:2pxsolidgray;padding:

Lohnt es sich, Artikel auf der Toutiao Search Express Edition zu veröffentlichen? Lohnt es sich, Artikel auf der Toutiao Search Express Edition zu veröffentlichen? Feb 29, 2024 pm 04:16 PM

Die Toutiao Search Express-Software bietet Benutzern nicht nur eine Fülle von Artikelinhalten zum Durchsuchen, sondern bietet Benutzern auch eine Plattform, auf der sie sich ausdrücken und Wissen teilen können. Viele Benutzer möchten wissen, ob man mit dem Veröffentlichen von Artikeln in der Toutiao Search Express Edition Geld verdienen kann. Deshalb wird der Herausgeber dieser Website heute ausführlich vorstellen, ob man mit dem Veröffentlichen von Artikeln in der Toutiao Search Express Edition Geld verdienen kann und wie man Artikel veröffentlicht alle in Not. Gibt es einen Gewinn aus der Veröffentlichung von Artikeln auf Toutiao Search Express? Antwort: Ja. 1. Zuerst öffnen wir die Toutiao-Suchgeschwindigkeitsversion. Auf der Startseite klicken wir auf das [Plus-Symbol] in der oberen rechten Ecke. 2. Dann gelangen wir zur Seite zum Veröffentlichen von Artikeln, auf der wir Videos und Fotos hochladen können , Links und Text eingeben. Warten Sie, alles ist eingerichtet

Geht der Inhalt von DreamWeaver CMS-Artikeln verloren? In einem Zug erledigt Geht der Inhalt von DreamWeaver CMS-Artikeln verloren? In einem Zug erledigt Mar 29, 2024 am 09:06 AM

DedeCMS ist ein leistungsstarkes Open-Source-Website-Content-Management-System, das bei den meisten Website-Erstellern sehr beliebt ist. Allerdings kann es bei der Nutzung manchmal zu einem Verlust von Artikelinhalten kommen, was den Website-Administratoren erhebliche Probleme bereitet. In diesem Artikel wird eine Methode zur Lösung des Problems fehlender Artikelinhalte in Dreamweaver CMS vorgestellt und spezifische Codebeispiele bereitgestellt, um Website-Administratoren zu helfen, die auf dieses Problem stoßen. Beschreibung des Problemphänomens: Bei der Verwendung von DreamWeaver CMS geht manchmal der Inhalt von Artikeln verloren. möglich

Was soll ich tun, wenn der Inhalt von DreamWeaver CMS-Artikeln verschwindet? Schnelle Lösung Was soll ich tun, wenn der Inhalt von DreamWeaver CMS-Artikeln verschwindet? Schnelle Lösung Mar 29, 2024 am 11:36 AM

DedeCMS ist ein leistungsstarkes Open-Source-Content-Management-System, das bei der Erstellung verschiedener Websites weit verbreitet ist. Allerdings kann es vorkommen, dass Artikelinhalte während der Nutzung verschwinden, was den Website-Betreibern Ärger bereitet. Dieser Artikel stellt Ihnen die häufigsten Gründe und schnellen Lösungen für das Verschwinden von Artikelinhalten in DreamWeaver CMS vor und stellt außerdem spezifische Codebeispiele bereit, um Ihnen bei der Lösung dieses Problems zu helfen. 1. Mögliche Gründe für das Verschwinden des Artikelinhalts: Datenbankbetriebsfehler: Die Tabelle, in der Artikelinhalte in der Datenbank gespeichert sind, kann möglicherweise

PHP-Programmierkenntnisse: Implementieren Sie die Like-Funktion für mehrere Artikel PHP-Programmierkenntnisse: Implementieren Sie die Like-Funktion für mehrere Artikel Feb 27, 2024 pm 03:27 PM

Titel: PHP-Programmierkenntnisse: Implementierung der Like-Funktion für mehrere Artikel Bei der Website-Entwicklung ist die Like-Funktion eine der häufigsten und wichtigen Funktionen. Sie kann die Benutzerinteraktivität erhöhen und das Benutzererlebnis verbessern. In diesem Artikel besprechen wir, wie Sie mit PHP die Like-Funktion für mehrere Artikel implementieren. Wir werden PHP- und MySQL-Datenbanken verwenden, um diese Funktion zu implementieren, und spezifische Codebeispiele bereitstellen, damit die Leser den Implementierungsprozess besser verstehen können. Schritt 1: Erstellen Sie eine Datenbank. Zuerst müssen wir eine Datenbank erstellen, um Artikelinformationen und die Anzahl der Likes zu speichern. Wir erstellen

See all articles