web-dev-qa-db-fra.com

Optimisations MySQL

Je gère un serveur dédié avec environ 20 sites Web actifs. Environ 6 d'entre eux sont des installations magento. Exécution du serveur en tant que serveur Web (Web, e-mail et mySQL).

Ceci est une optimisation préventive. Actuellement, je ne semble pas avoir de problèmes, mais j'estime qu'il est bon d'être proactif et d'optimiser maintenant d'éviter les problèmes potentiels plus tard.

Le serveur est un processeur de 8 cœurs, 8 Go de RAM, des centos en cours 6. Le 8 Go de RAM est réparti autour de l'ensemble du serveur, pas seulement de la base de données. J'essaie d'optimiser mon installation MySQL pour la meilleure performance et la meilleure stabilité. Ran mysqltuner (1.7.4) et obtenir ces suggestions.

J'apprécierais une aide pour optimiser les paramètres.

Merci!

Mise à jour: 11/28/2017 08:20 HNE

 - Added additional 8GB of RAM.  
 - Latest MySQLTuner results. Global Status, Variables, Innodb Status files updated.

Peut voir les 3 fichiers demandés ici . Dernières infos ci-dessous:

-------- Storage Engine Statistics -----------------------------------------------------------------
[--] Status: +ARCHIVE +BLACKHOLE +CSV -FEDERATED +InnoDB +MEMORY +MRG_MYISAM +MyISAM +PERFORMANCE_SCHEMA
[--] Data in MyISAM tables: 90M (Tables: 300)
[--] Data in InnoDB tables: 923M (Tables: 3591)
[--] Data in MEMORY tables: 3M (Tables: 141)
[OK] Total fragmented tables: 0

-------- Security Recommendations ------------------------------------------------------------------
[OK] There are no anonymous accounts for any database users
[OK] All database users have passwords assigned
[--] There are 612 basic passwords in the list.

-------- CVE Security Recommendations --------------------------------------------------------------
[OK] NO SECURITY CVE FOUND FOR YOUR VERSION

-------- Performance Metrics -----------------------------------------------------------------------
[--] Up for: 13d 17h 16m 32s (29M q [25.279 qps], 860K conn, TX: 43G, RX: 9G)
[--] Reads / Writes: 68% / 32%
[--] Binary logging is disabled
[--] Physical Memory     : 7.7G
[--] Max MySQL memory    : 5.1G
[--] Other process memory: 964.7M
[--] Total buffers: 4.4G global + 1.1M per thread (100 max threads)
[--] P_S Max memory usage: 555M
[--] Galera GCache Max memory usage: 0B
[OK] Maximum reached memory usage: 5.0G (65.37% of installed RAM)
[OK] Maximum possible memory usage: 5.1G (66.51% of installed RAM)
[OK] Overall possible memory usage with other process is compatible with memory available
[OK] Slow queries: 0% (35/29M)
[OK] Highest usage of available connections: 21% (21/100)
[OK] Aborted connections: 0.01%  (114/860297)
[!!] name resolution is active : a reverse name resolution is made for each new connection and can reduce performance
[!!] Query cache may be disabled by default due to mutex contention.
[OK] Query cache efficiency: 90.8% (22M cached / 25M selects)
[!!] Query cache prunes per day: 43104
[OK] Sorts requiring temporary tables: 0% (38 temp sorts / 360K sorts)
[!!] Joins performed without indexes: 22932
[OK] Temporary tables created on disk: 23% (201K on disk / 844K total)
[OK] Thread cache hit rate: 99% (21 created / 860K connections)
[OK] Table cache hit rate: 47% (7K open / 16K opened)
[OK] Open file limit used: 4% (867/20K)
[OK] Table locks acquired immediately: 99% (5M immediate / 5M locks)

-------- Performance schema ------------------------------------------------------------------------
[--] Memory used by P_S: 555.4M
[--] Sys schema isn't installed.

-------- ThreadPool Metrics ------------------------------------------------------------------------
[--] ThreadPool stat is enabled.
[--] Thread Pool Size: 8 thread(s).
[!!] thread_pool_size between 16 and 36 when using InnoDB storage engine.

-------- MyISAM Metrics ----------------------------------------------------------------------------
[!!] Key buffer used: 19.5% (52M used / 268M cache)
[OK] Key buffer size / total MyISAM indexes: 256.0M/22.5M
[OK] Read Key buffer hit rate: 99.9% (3M cached / 3K reads)
[!!] Write Key buffer hit rate: 42.3% (124K cached / 52K writes)

-------- InnoDB Metrics ----------------------------------------------------------------------------
[--] InnoDB is enabled.
[--] InnoDB Thread Concurrency: 4
[OK] InnoDB File per table is activated
[OK] InnoDB buffer pool / data size: 4.0G/923.8M
[!!] Ratio InnoDB log file size / InnoDB Buffer pool size (50 %): 1.0G * 2/4.0G should be equal 25%
[!!] InnoDB buffer pool instances: 8
[--] InnoDB Buffer Pool Chunk Size not used or defined in your version
[OK] InnoDB Read buffer efficiency: 99.99% (383379684 hits/ 383413960 total)
[!!] InnoDB Write Log efficiency: 72.46% (2434433 hits/ 3359563 total)
[OK] InnoDB log waits: 0.00% (0 waits / 925130 writes)

-------- AriaDB Metrics ----------------------------------------------------------------------------
[--] AriaDB is disabled.

-------- TokuDB Metrics ----------------------------------------------------------------------------
[--] TokuDB is disabled.

-------- XtraDB Metrics ----------------------------------------------------------------------------
[--] XtraDB is disabled.

-------- RocksDB Metrics ---------------------------------------------------------------------------
[--] RocksDB is disabled.

-------- Spider Metrics ----------------------------------------------------------------------------
[--] Spider is disabled.

-------- Connect Metrics ---------------------------------------------------------------------------
[--] Connect is disabled.

-------- Galera Metrics ----------------------------------------------------------------------------
[--] Galera is disabled.

-------- Replication Metrics -----------------------------------------------------------------------
[--] Galera Synchronous replication: NO
[--] No replication slave(s) for this server.
[--] This is a standalone server.

-------- Recommendations ---------------------------------------------------------------------------
General recommendations:
    Control warning line(s) into /var/lib/mysql/ file
    Control error line(s) into /var/lib/mysql/ file
    Configure your accounts with ip or subnets only, then update your configuration with skip-name-resolve=1
    Adjust your join queries to always utilize indexes
    Consider installing Sys schema from https://github.com/mysql/mysql-sys
    Thread pool size for InnoDB usage (8)
    Read this before changing innodb_log_file_size and/or innodb_log_files_in_group:
Variables to adjust:
    query_cache_size (=0)
    query_cache_type (=0)
    query_cache_size (> 100M)
    join_buffer_size (> 256.0K, or always use indexes with joins)
    thread_pool_size between 16 and 36 for InnoDB usage
    innodb_log_file_size should be (=512M) if possible, so InnoDB total log files size equals to 25% of buffer pool size.
    innodb_buffer_pool_instances(=4)

Vous trouverez ci-dessous les paramètres actuellement dans mon fichier de configuration.

[mysqld]                                                                                                                            

datadir=/var/lib/mysql
socket=/chroot/tmp/mysql.sock

userstat=1


ft_min_Word_len=3

max_connections=100 # MAX CURRENT X 5
max_connect_errors=25
connect_timeout=10
interactive_timeout=20
wait_timeout=50
delayed_insert_timeout=10
#join_buffer_size=1M

max_allowed_packet=16M

myisam_sort_buffer_size=1M
#sort_buffer_size=1M

#read_buffer_size=1M
#read_rnd_buffer_size=2M

thread_cache_size=100  # from 192 MySQL v 8 recommends CAP of 100 to avoid overload
thread_concurrency=4

query_cache_size=100M # from 256M
#query_cache_limit=32M #remove to allow default of 1M rather than 32M
query_cache_type=1
query_cache_min_res_unit = 512  # from 4K to conserve qcache RAM used per RESULT

tmp_table_size=80M # from 512M
max_heap_table_size=80M # from 512M
max_tmp_tables=10
slow_query_log=1
long_query_time=10
slow-query-log-file  = /var/lib/mysql/mysql-slow.log
table_open_cache = 10000  # 10000 from 2000 to support the 28,000 opened by instance

innodb-file-per-table=1

character-set-server=utf8
collation-server=utf8_general_ci

# Tweaking below
# 256M
innodb_buffer_pool_size = 4G  # to match RAM reported by MySQLTuner
# 512 MB
key_buffer_size = 256M  # from 512M used only my MyISAM
# 16MB
bulk_insert_buffer_size = 16M
innodb_thread_concurrency = 4
innodb_autoinc_lock_mode = 0
skip-external-locking
# Double write off :)
innodb_doublewrite = true
low_priority_updates = 1
#innodb_checksums = false
innodb_support_xa = false
max_write_lock_count = 10
innodb_flush_log_at_trx_commit = 2
innodb_max_dirty_pages_pct = 40
innodb_io_capacity = 400
innodb_write_io_threads = 4
innodb_read_io_threads = 4
innodb_adaptive_flushing = 1
innodb_flush_method = O_DIRECT
innodb_log_file_size=1G
innodb_print_all_deadlocks = 1 # to error log, if you ever have one, you will WISH you had the details. 
innodb_buffer_pool_dump_at_shutdown=1 # from OFF to allow quick warmup 
innodb_buffer_pool_load_at_startup=1 #from OFF to allow warmed buffer_pool
#skip-name-resolve=1
#log_error_verbosity=3 
log_warnings = 2 # to record Aborted Connections in error.log
3
enyceexdanny

Votre my.cnf comprend 4 lignes qui devraient être supprimées, elles sont

sort_buffer_size read_buffer_size read_rnd_buffer_size join_buffer_size

celles-ci sont toutes des exigences par connexion RAM et entraînent une empreinte RAM beaucoup plus haut que nécessaire. Laissez les valeurs par défaut pour vous améliorer le temps de réponse avec de la place pour respirer dans la RAM. Envisagez de régler ce qui suit dans votre my.cnf, s'il vous plaît

key_buffer_size = 512M  # from 1G because 200M is used now
innodb_buffer_pool_size = 4G  # to match RAM reported by MySQLTuner
max_connections = 100  # from 500, until more than 8 are used
thread_cache_size = 100  # from 192 MySQL v 8 recommends CAP of 100 to avoid overload
query_cache_limit     remove to allow default of 1M rather than 32M
query_cache_min_res_unit = 512  # from 4K to conserve qcache RAM used per RESULT
table_open_cache = 10000  # from 2000 to support the 28,000 opened by instance

Une fois que les éléments ci-dessus ont été configurés, l'arrêt/redémarrage est terminé et vous avez 7 (ou plus) jours de disponibilité consécutifs, veuillez actualiser votre rapport My.cnf et MySQLTUNER, puis pour une autre analyse détaillée, ajoutez/actualisée à OriginalPost le suivant , Montrer le statut global; Montrer des variables globales; Afficher le statut de moteur Innodb; Pour un maximum de cinq recommandations spécifiques de CFG supplémentaires, une par jour à appliquer, surveiller.

2
Wilson Hauck
query_cache_size=256M  -->  50M -- A large size can actually slow down due to purging
query_cache_type=1  -- Do you actually find it useful?  Provide SHOW GLOBAL STATUS LIKE "Qc%";

tmp_table_size=512M  --> No mo than 1% of RAM; else could lead to swapping
max_heap_table_size=512M  --> Ditto

slow_query_log=1
long_query_time=1  -- Good.  But only 18 slow queries?

thread_cache_size = 100  -- Wasting RAM since you haven't seen more than 9.

table_open_cache = 10000  -- OK if you need it.  But do you really have thousands of tables?

innodb_buffer_pool_size = 4G  -- Good (for 8G of RAM)
key_buffer_size = 512M  -- Too high if not using MyISAM

innodb_flush_log_at_trx_comm -- mispelled

innodb_max_dirty_pages_pct = 40  -- this low a setting probably leads to more I/O

[!!] Joins performed without indexes: 1453  -- Let's see some
[!!] Temporary tables created on disk: 29% (29K on disk / 98K total)  -- Let's see some

Remarques:

  • Vous ne pouvez pas "régler votre moyen de sortir des problèmes de performance". Certaines de mes suggestions ci-dessus aideront certains.

  • Les requêtes lentes doivent être étudiées.

  • Passez de Myisam en InnoDB dans la mesure du possible.

  • Le cache de requête, IN la plupart Les systèmes de production doivent être éteints.

  • Magento est-il sur le même serveur? Combien RAM== est-ce qu'il utilise? Tous les conseils donnés ici suppose que vous avez 8 Go de RAM== Disponible à MySQL. Si vous en avez moins, plusieurs réglages doivent être abaissé.

  • Pour plus d'analyse de réglage, voir ICI . Ce blog comprend quelques suggestions autour de la limitation de l'espace dans ce forum. Il suggère également quoi faire avec le ralentisseur.

  • Vous avez mentionné la "stabilité", mais vous utilisez Myisam et avez éteint le tampon de double écriture et défini innodb_flush_log_at_trx_commit Un paramètre pour la performance, pas l'intégrité des données.

Plongée plus profond

Quelques autres choses ont montré:

Observations:

Version: 5.6.36-82.1-log 
7.7 GB of RAM 
Uptime = 9d 23:50:34 
You are not running on Windows. 
Running 64-bit version 
It appears that you are running both MyISAM and InnoDB. 

Les problèmes les plus importants

tmp_table_size et max_heap_table_size sont dangereusement élevés à 512m. Si un certain nombre de requêtes complexes devaient être exécutées simultanément, vous pourriez manquer de RAM, ce qui entraîne un ralentissement important. Recommander pas plus de 1% (80m) de RAM pour chacun. (max_tmp_tables est inutilisé.)

query_cache_size conduit à des performances dégradées lorsqu'il est trop grand. Plus bas à 50m.

Il y a beaucoup de scans de table; ensemble long_query_time à 1 et allumer le ralentisseur. Plus tard, découvrez les pires requêtes et travaillez sur eux.

Désactiver le tampon de double écriture est une petite invitation à la corruption de la base de données.

Il semble que ni des tables d'InnoDb, ni de myisam, ne soient si gros que de augmenter leurs tampons. En fait, ils pourraient être abaissés si RAM est nécessaire ailleurs.

Pour de nombreuses raisons, les tables de myisam devraient être converties en InnoDB. Conversion de Myisam en InnoDB

table_open_cache peut aussi bien être abaissé à 3000.

innodb_log_file_size est beaucoup plus élevé que nécessaire, mais ne vaut probablement pas la peine de changer.

Les "sauvegardes" sont rarement utilisés dans MySQL; Comment travaillent-ils pour vous?

Détails et autres observations

( (key_buffer_size - 1.2 * Key_blocks_used * 1024) / _ram ) = (512M - 1.2 * 5839 * 1024) / 8267812044.8 = 6.4% - Pourcentage de RAM gaspillé dans Key_Buffer. - Diminuer Key_Buffer_Size.

( innodb_buffer_pool_size / _ram ) = 4096M / 8267812044.8 = 51.9% -% de RAM utilisé pour Innodb Buffer_pool

( table_open_cache ) = 10,000 - Nombre de descripteurs de table à cache - plusieurs centaines sont généralement bonnes.

( Innodb_buffer_pool_pages_free * 16384 / innodb_buffer_pool_size ) = 216,083 * 16384 / 4096M = 82.4% - Buffer Pool Free - Buffer_Pool_Size est plus grand que le jeu de travail; pourrait le diminuer

( innodb_max_dirty_pages_pct ) = 40 - Lorsque Buffer_Pool commence à rincer sur le disque - Expérimez-vous?

( Innodb_buffer_pool_pages_free / Innodb_buffer_pool_pages_total ) = 216,083 / 262136 = 82.4% - PCT de buffer_pool Actuellement non utilisé - innodb_buffer_pool_size à plus grand que nécessaire?

( Innodb_buffer_pool_bytes_data / innodb_buffer_pool_size ) = 735,395,840 / 4096M = 17.1% - Pourcentage de la piscine tampon prise par des données - un petit pour cent mai Indiquez que le buffer_pool est inutilement grand.

( Innodb_dblwr_pages_written/Innodb_pages_written ) = 0/1260380 = 0 - On dirait que ces valeurs devraient être égales?

( innodb_doublewrite ) = OFF - E/S supplément, mais une sécurité supplémentaire dans l'accident. - Off est OK pour FusionIO, GALERA, SLAVES

( Innodb_os_log_written / (Uptime / 3600) / innodb_log_files_in_group / innodb_log_file_size ) = 1,246,395,904 / (863434 / 3600) / 2 / 1024M = 0.00242 - Ratio (voir minutes)

( Uptime / 60 * innodb_log_file_size / Innodb_os_log_written ) = 863,434 / 60 * 1024M / 1246395904 = 12,397 - minutes entre les rotations de journaux Innodb commençant par 5.6.8, cela peut être modifié de manière dynamique; Assurez-vous également de changer mon.cnf. - (La recommandation de 60 minutes entre les rotations est quelque peu arbitraire.) Ajustez Innodb_Log_File_Size. (Ne peut pas changer d'AWS.)

( Innodb_rows_deleted / Innodb_rows_inserted ) = 1,249,027 / 1276124 = 0.979 - Swwurn - "Ne faites pas la file d'attente, faites-le." (Si MySQL est utilisé comme une file d'attente.)

( expand_fast_index_creation ) = OFF - Alter et optimiser peut être considérablement accéléré en utilisant sur. - Probablement mieux d'être sur.

( innodb_thread_concurrency ) = 4 - 0 = Laissez InnoDB décider le meilleur pour la concurrence_candie. - réglé sur 0

( innodb_print_all_deadlocks ) = OFF - Si vous souhaitez connecter toutes les impasses. - Si vous êtes en proie à des blocages, tournez-le. Attention: Si vous avez beaucoup d'impasse, cela peut écrire beaucoup sur le disque.

( min( tmp_table_size, max_heap_table_size ) / _ram ) = min( 512M, 512M ) / 8267812044.8 = 6.5% - Pourcentage de RAM== Pour allouer lorsqu'il nécessite une table de mémoire (par table) ou une table temporelle à l'intérieur d'une table SELECT (Table par temporisation par certains choix). Trop élevé peut entraîner un échange. - - Diminuer TMP_TABLE_SIZE et max_heap_table_size à, disons, 1% de RAM.

( innodb_buffer_pool_populate ) = OFF = 0 - contrôle numa

( local_infile ) = ON - local_infile = sur est un problème de sécurité potentiel

( Key_blocks_used * 1024 / key_buffer_size ) = 5,839 * 1024 / 512M = 1.1% - Pourcentage de key_buffer utilisé. Marque haute de l'eau. - Basse key_buffer_size pour éviter une utilisation inutile de la mémoire.

( Key_writes / Key_write_requests ) = 131,634 / 155998 = 84.4% - Efficacité Key_Buffer pour écrit - si vous avez assez de RAM, il serait utile d'augmenter Key_Buffer_Size.

( query_cache_size ) = 256M - Taille de QC - Trop petit = pas beaucoup d'usage. Trop grand = trop de frais généraux. Recommande 0 ou pas plus de 50 m.

( (query_cache_size - Qcache_free_memory) / Qcache_queries_in_cache / query_alloc_block_size ) = (256M - 63512256) / 115486 / 8192 = 0.217 - Query_ALLOC_BLOCK_SIZE VS FORMULA - Ajustez QUERY_ALLOC_BLOCK_SIZE

( Created_tmp_disk_tables / (Created_tmp_disk_tables + Created_tmp_tables) ) = 148,564 / (148564 + 549507) = 21.3% - Pourcentage de tables temporaires qui sont renversés sur le disque - peut-être augmenter TMP_Table_SIZE et max_heap_table_size; Évitez les blobs, etc.

( tmp_table_size ) = 512M - Limiter la taille de [~ # ~] mémoire [~ # ~] Tables Temps utilisées pour prendre en charge une SELECT - Diminuer TMP_TABLE_SIZE pour éviter de fonctionner hors de la RAM. Peut-être pas plus de 64 m.

( (Com_insert + Com_update + Com_delete + Com_replace) / Com_commit ) = (257684 + 342113 + 118532 + 235) / 389763 = 1.84 - déclarations par commis (en supposant que tout InnoDB) - faible: pourrait aider à regrouper les requêtes dans les transactions; Haut: longueurs de transactions varient diverses choses.

( Select_scan / Com_select ) = 527,912 / 1359892 = 38.8% -% de sélection de la table de la table complète. (Peut être dupe de routines stockées.) - Ajouter des index/optimiser les requêtes

( binlog_error_action ) = IGNORE_ERROR - Que faire si le binlog ne peut pas être écrit. - Ignore_Error est la valeur par défaut de la compatibilité en arrière, mais Abort_Server est recommandé.

( binlog_format ) = STATEMENT - Déclaration/ligne/mixte. La ligne est préférée; Cela peut devenir la valeur par défaut.

( expire_logs_days ) = 0 - combien de temps purge automatiquement Binlog (après plusieurs jours) - trop grand (ou zéro) = consomme de l'espace disque; Trop petit = besoin de réagir rapidement au crash de réseau/machine. (Non pertinent si log_bin = Off)

( innodb_autoinc_lock_mode ) = 0 - Galera: désirs 2 - 2 = "entrelacé"; 1 = "consécutif" est typique; 0 = "traditionnel".

( back_log / max_connections ) = 70 / 100 = 70.0%

( thread_cache_size ) = 100 - Combien de processus supplémentaires pour rester autour (non pertinents lors de l'utilisation de la mise en commun de fil) (Autotisé à partir de 5.6.8; sur la base de max_connections) - 0 est bon pour Windows 0 est inefficace pour les non-fenêtres; 10 est probablement bien

( thread_cache_size / max_connections ) = 100 / 100 = 100.0% - (0 pour Windows)

(Les valeurs "anormales" suivantes ne sont pas nécessairement "mauvaises", simplement rare.)

Anormalement petit:

Innodb_dblwr_pages_written = 0
Threads_connected = 0.0042 /HR
delayed_insert_timeout = 10
interactive_timeout = 20
myisam_sort_buffer_size = 1MB
query_cache_min_res_unit = 512
thread_concurrency = 4
wait_timeout = 50

Anormalement grand:

Com_drop_user = 0.0042 /HR
Com_empty_query = 15 /HR
Com_release_savepoint = 0.19 /HR
Com_rollback_to_savepoint = 15 /HR
Com_savepoint = 0.19 /HR
Com_show_create_func = 0.0083 /HR
Com_show_processlist = 0.17 /sec
Com_show_status = 0.17 /sec
Com_stmt_send_long_data = 1.9 /HR
Handler_savepoint = 0.19 /HR
Handler_savepoint_rollback = 15 /HR
Open_table_definitions = 4,172
Open_tables = 7,852
Qcache_free_blocks = 49,773
Qcache_total_blocks = 287,236
max_heap_table_size = 512MB

Cordes anormales:

ft_min_Word_len = 3
innodb_force_load_corrupted = OFF
innodb_support_xa = OFF
low_priority_updates = ON
optimizer_trace = enabled=off,one_line=off
optimizer_trace_features = greedy_search=on, range_optimizer=on, dynamic_range=on, repeated_subselect=on
secure_file_priv = /var/lib/mysql-files/
sha256_password_private_key_path = private_key.pem
sha256_password_public_key_path = public_key.pem
slave_rows_search_algorithms = TABLE_SCAN,INDEX_SCAN
sql_slave_skip_counter = 0
userstat = ON
1
Rick James

my.cnf activités à faire dans la section [mysqld]:

thread_concurrency=30 # from 4 to support more concurrent processing
innodb_io_capacity_max=6000 # from 2000 (default)
innodb_io_capacity=1200 # from 400 per second
innodb_thread_concurrency=15 # from 4 
innodb_write_io_threads=8 # from 4  
key_buffer_size=16M # from 256M less than 5M used in 13 days
expire_logs_days=5 # from 0 to allow research more days
innodb_purge_threads=2 # from 1 to reduce DEL delays
innodb_read_ahead_threshold=8 # from 56 to enable read ahead quicker
innodb_stats_sample_pages=32 # from 8 for more accurate cardinality data
low_priority_updates=OFF # from ON to minimize exposure to power fails
max_join_size=1000000000 # from huge number to 1 Billion row limit
max_seeks_for_key=32 # from huge number to reasonable limit before scan
sql_select_limit=1000000000 # from huge number to 1 Billion row limit
query_prealloc_size=32768 # from 8192 to avoid RAM allocation all day for large queries
lock_wait_timeout=300 # from 31536000 secs (1 year) until replication needed

Une minute de votre journal général d'une heure de journée occupée permettrait à une analyse de suggérer des modifications de code pour obtenir plus de 1 des 21 requêtes à stocker dans le cache de requêtes.

5 pages de votre journal de requête lente révéleraient de nombreux détails menant à une éventuelle création d'index et/ou à des modifications de code pour réduire le temps de traitement. MySQLTUNER gêne des jointures sans index. Et ils prennent beaucoup plus de temps que lorsqu'ils sont correctement indexés des deux côtés des variables.

L'affichage de votre système Linux ulimit -a révélerait toutes les limites d'aide à obtenir plus de tables, de définitions de table et de capacité de fichier ouverte disponible.

Continué au succès avec votre installation. Veuillez considérer upvote et/ou acceptation d'idées qui aident votre équipe.

1
Wilson Hauck

Ce script permettra 10 secondes rapports de temps écoulés de valeurs d'état globales utilisées avec des RP et un taux calculés par minute pour chaque élément.

# filename globalstatusage10sec.sql   Last Update 201801310853 whauck
# 2015-01-23 from schlomi's web site
# http://code.openark.org/blog/mysql/mysql-global-status-difference-using-single-query
# shortened AS labels for columns to be effective
SELECT STRAIGHT_JOIN
   LOWER(gs0.VARIABLE_NAME) AS variable_name,
   gs0.VARIABLE_VALUE AS "Begin",
   gs1.VARIABLE_VALUE AS "End",
   (gs1.VARIABLE_VALUE - gs0.VARIABLE_VALUE) AS diff,
   (gs1.VARIABLE_VALUE - gs0.VARIABLE_VALUE) / 10 AS psec,
   (gs1.VARIABLE_VALUE - gs0.VARIABLE_VALUE) * 60 / 10 AS
pminute
FROM
   (
     SELECT
       VARIABLE_NAME,
       VARIABLE_VALUE
     FROM
       INFORMATION_SCHEMA.GLOBAL_STATUS
     UNION ALL
     SELECT
       '',
       SLEEP(10)
     FROM DUAL
   ) AS gs0
   JOIN (
     SELECT 
       VARIABLE_NAME,
       VARIABLE_VALUE
     FROM 
       INFORMATION_SCHEMA.GLOBAL_STATUS
   ) gs1 USING (VARIABLE_NAME)
WHERE
   gs1.VARIABLE_VALUE != gs0.VARIABLE_VALUE LIMIT 0,800
;
0
Wilson Hauck