Um nur einen Einblick in den Auszug Ihrer Konfigurationsdatei zu erhalten, habe ich einen Vergleich mit dem Standardwert ( 1, 2 ) durchgeführt. In der Notation wird der Parameter gefolgt von Ihrem Wert und dem Standardwert in Klammern angezeigt.
key_buffer_size = 128M (8M) max_allowed_packet = 5M (4M) table_open_cache = 256 (2000) sort_buffer_size = 10M (2M) read_buffer_size = 20M (1M) read_rnd_buffer_size = 10M (2M) myisam_sort_buffer_size = 64M (8M) thread_cache_size = 8 (-1) query_cache_size= 30M (0/1M) thread_concurrency = 8 (10) bulk_insert_buffer_size = 256 (8M) innodb_buffer_pool_size = 5G (128M) innodb_additional_mem_pool_size = 1G (8M) innodb_log_buffer_size = 1G (8M) innodb_log_file_size = 1G (5M) innodb_file_per_table = 1 (Off/On)
Wie Sie sehen, haben Sie die meisten Caches erheblich erhöht. Aber macht das Sinn? Sie sagten, dass Ihre Datenbank die InnoDB-Engine verwendet. Gemäß der obigen Dokumentation key_buffer_size
, read_buffer_size
, bulk_insert_buffer_size
gilt nur für MyISAM - Datenbanken. Ich bin mir nicht sicher, wann temporäre Räume darauf laufen würden.
Die Verwendung myisam_sort_buffer_size
scheint rückständig zu sein, zumal die Dokumentation besagt: The size of the buffer that is allocated when sorting MyISAM indexes during a REPAIR TABLE or when creating indexes with CREATE INDEX or ALTER TABLE.
In den meisten normalen Anwendungsfällen würde sie selten verwendet.
Darüber hinaus verwenden Sie die folgenden Einstellungen, die auf Ihrem DB Nutzungsmuster verlassen zu stark scheint max_allowed_packet
, table_open_cache
, thread_cache_size
, innodb_log_buffer_size
aber sie sagte nichts über die Nutzungsmuster. Betrachten Sie die obige Dokumentation, um zu sehen, was sie tatsächlich tun, und vergleichen Sie sie mit dem Verwendungsmuster der Datenbank.
Hüten Sie sich vor dem sort_buffer_size
und read_rnd_buffer_size
ist pro Sitzung reserviert. Einige der MyISAM-Parameter können ebenfalls gut sein, so dass Sie für jede Sitzung einen erheblichen Overhead haben. Wieder müssen Sie das tatsächliche Nutzungsmuster auswerten.
Nun zu den InnoDB-Einstellungen, die Sie angegeben haben. innodb_additional_mem_pool_size
ist veraltet. Es ist nicht klar, warum Sie Änderungen vornehmen innodb_log_file_size
und innodb_file_per_table
nicht sicher sind, aus welchen Gründen Sie diese Änderung vornehmen. Letzteres könnte nur ein Ausfall von sein On
? Wenn Sie die verbleibende Einstellung innodb_buffer_pool_size
auf einen so hohen Wert setzen, sollten Sie auch die Verwendung in Betracht ziehen innodb_buffer_pool_instances
.
Insgesamt sieht es so aus, als hätten Sie gerade etwas versucht und es hat nicht funktioniert. Laut Ihren Anmerkungen haben Sie nicht einmal die MySQL-Protokolldateien angesehen, um herauszufinden, was dafür verantwortlich war, dass der Dienst keine Verbindungen akzeptierte oder überhaupt nicht zustande kam. Wenn Sie die DB-Leistung wirklich optimieren möchten, müssen Sie dies tun. Erwägen Sie gegebenenfalls die Verwendung zusätzlicher Indizes für Tabellen, um die Abfrageleistung zu erhöhen, und prüfen Sie, welche Abfragen tatsächlich in der Datenbank ausgeführt werden. Versuchen Sie außerdem zu verstehen, welches Verwendungsmuster der DB in Bezug auf die Anzahl der Verbindungen und die Größe der Abfragen hat.