Category:MySQL’

Optimiser MySql my.cnf

 - by admin

 

Logo Mysql

Vous possédez une base MySQL que vous souhaitez optimiser ? Vous n’êtes pas un expert MySQL et vous ne comprenez pas vraiment tous les paramètres contenus dans le fichier de configuration de votre instance MySQL ?

 

Et bien je pense avoir trouvé la réponse à votre problème :

http://day32.com/MySQL/tuning-primer.sh

Il s’agit d’un script Shell qui permet de faire des préconisations à chaud de votre base de données. Il vous donne un ensemble d’astuces en fonction de l’utilisation réelle que vous faites de votre base :

  • Slow Query Log
  • Max Connections
  • Worker Threads
  • Key Buffer
  • Query Cache
  • Sort Buffer
  • Joins
  • Temp Tables
  • Table (Open & Definition) Cache
  • Table Locking
  • Table Scans (read_buffer)
  • Innodb Status

Il suffit d’exécuter le script et de modifier le fichier de configuration de votre base en fonction des recommandations faites.

#sh tuning-primer.sh

MySQL: fonction GROUP_CONCAT

 - by admin

Il m’arrive fréquemment d’avoir à sélectionner des lignes de données à partir d’un ou plusieurs critères. C’est le cas dès que l’on souhaite récupérer une liste. C’est également très pratique pour mettre à jour ces dites-lignes. Seulement voilà, des fois on pourrait éviter quelques boucles et quelques complications avec l’utilisation de cette fonction magique que je viens de découvrir:

GROUP_CONCAT permet de concaténer toutes les valeurs d’une colonne en une seule chaîne. C’est particulièrement pratique dans des requêtes SQL de regroupement, où il faudra exporter toutes les valeurs d’un groupe. GROUP_CONCAT permet alors de rassembler les lignes en une seule, et évite une double boucle coté.

Example:

[code lang="mysql"]
CREATE TABLE services (
id INT UNSIGNED NOT NULL,
client_id INT UNSIGNED NOT NULL,
KEY (id));

INSERT INTO services
VALUES (1,1),(1,2),(3,5),(3,6),(3,7);

SELECT id,client_id FROM services WHERE id = 3;
+----+-----------+
| id | client_id |
+----+-----------+
| 3 | 5 |
| 3 | 6 |
| 3 | 7 |
+----+-----------+

SELECT id,GROUP_CONCAT(client_id) FROM services WHERE id = 3 GROUP BY id;
+----+-------------------------+
| id | GROUP_CONCAT(client_id) |
+----+-------------------------+
| 3 | 5,6,7 |
+----+-------------------------+
[/code]