SQL: copie simple d'une table
Pour ne plus oublier : insert into new_table (select * from old_table);
Pour ne plus oublier : insert into new_table (select * from old_table);
Lorsque lâon dĂ©sactive le query_cache, les sous requĂȘtes ne le sont pas. Mettre : set global query_cache_type=0; set global optimizer_switch="subquery_cache=off";
Voici une configuration qui fonctionne sur un site Ă fort trafic. !!! note Ă adapter Ă la taille de la base et au trafic utilisateurs. On dĂ©sactive le cache de requĂȘtes. Lâinvalidation de ce cache est coĂ»teuse et vĂ©rrouille tout le cache pendant sa mise Ă jours. set global query_cache_type=0; set global optimizer_switch="subquery_cache=off"; On dĂ©fini par exemple : # si la db fait 20Go innodb_buffer_pool_size = 20Go innodb_buffer_pool_instances = 20 # threads innodb simultanĂ©s : 2 x nb de CPU + nb de disques innodb_thread_concurrency = 86 # vĂ©rifier la frĂ©quence de fork de Mariadb/MySQL et les pics de nb de threads thread_cache = 128 # on vĂ©rifie la frĂ©quence d'accĂšs aux tables table_cache = 2048 # on active les log des requĂȘtes lentes : slow_query_log = 1 # on remonte les requĂȘtes lentes au delĂ de la seconde long_query_time = 1 slow_launch_time = 1 Explications Dimensionner correctement innodb_buffer_pool permet de garder les donnĂ©es en mĂ©moire aprĂšs leur lecture. La limitation de innodb_thread_concurrency Ă©vite les fork bombs lorsque des requĂȘtes sont bloquĂ©es. Le thread_cache permet dâĂ©viter la crĂ©ation et la suppression de threads lors dâun trafic normal.
Un petit tips rapide. Afin de remplacer une chaĂźne de caractĂšres dâune colonne par une autre. UPDATE table SET nom_colonne = REPLACE(nom_colonne, 'ancien texte', 'texte de remplacement') đ
Afin dâanalyser rapidement un problĂšme de reqĂ»etes sur une base de donnĂ©es en temps et en nombre. Sur une instance MySQL ou MariaDB : activation des slowquery mysqldumpslow du fichiers de log