Ingeny, le blog !

Véritable fenêtre sur notre univers, vous trouverez dans ce blog des ressources technologiques, des conseils, des témoignages et bien d'autres choses encore...

MySQL - Écrit par Durand Franck PDFImprimerEnvoyer Publié le 28.07.11

Par défaut, dans le cas d'une réplication MySQL, le serveur esclave correspond exactement au serveur maitre ( pour les bases / tables voulues ).

Il peut cependant être utile de pouvoir éxécuter certaines requêtes uniquement sur le maitre, sans les voir se repliquer sur le serveur esclave.

Pour pouvoir le faire il faut comprendre comment fonctionne la réplication MySQL. Afin d'activer la réplication, il est nécessaire d'activer les log binaires, qui vont contenir les requêtes executé sur le serveur. Le serveur esclave va alors venir lire ces log, pour répercuter les opérations.

Il suffit donc sur le serveur maitre, d'utiliser la variable SQL_LOG_BIN pour contrôler le log de nos requêtes :

SET SQL_LOG_BIN=0;

.... requetes non logguer ....

SET SQL_LOG_BIN=1;

 

De cette manière; il est possible de ne pas logguer, et donc de ne pas répliquer certaines requêtes sur le serveur esclave.

ATTENTION : si vous ne logguer pas des requêtes de création/modification/suppression de tables/bases, la réplication peux se briser, en effet une future requête qui ne pourai pas s'effectuer correctement sur le serveur esclave provoquerai une erreur stopant la replication !

L'utilisation de cette technique peux être utile pour par exemple obtenir un serveur esclave avec une plus grande rétention des données que le serveur maitre. En ne logguant pas les requêtes de nettoyage du maitre, et en utilisant une période de nettoyage différente sur le serveur esclave, on arrive alors à ce resultat.

 

Témoignages clients - Écrit par Dupond Jean-Francois PDFImprimerEnvoyer Publié le 11.03.11

Destockage

DirectGrossiste est fier de remercier et de féliciter l'excellent travail de Jeff.

Je fais affaires avec Jean-François de www.ingeny.fr, et je suis très satisfait du travail qui a été réalisé. Je recommande sans hésitation ses services qui sont d'une très grande qualité et des plus courtois. Ses connaissances informatiques m'ont permis de garder nos systèmes à jour et d'améliorer les performances.

Fort de compétences et de propositions, ce qui est très rare chez les développeurs, mais c'est comme cela que nous reconnaissons les gens de tallent quand Jeff nous rends un travail, il nous présente toujours un produit fini sans aléa, sans bug.

DSI dans une autre vie, j'ai vu beaucoup de projets et de développeurs et Jeff est (de loin) le meilleur, je ne peux que vous recommandez son travail.

Nous avons été enchantés par le professionnalisme, la rapidité de développement.

Nous avons eu beaucoup d'éloges et de commentaires très positifs sur les développements réalisés c'est pour cela que nous sommes fiers de remercier et de féliciter l'excellent travail de l'équipe de www.ingeny.fr.

Dans l'univers d'aujourd'hui, Internet est souvent la clé du succès et souvent, beaucoup de personnes vont s'improviser concepteur de site web à un très bas tarif mais, www.ingeny.fr est la ressource à qui faire confiance.

Quoi qu'il arrive, ils savent répondre à toutes les problématiques et nous donner l'aide requise au bon fonctionnement de notre structure internet.

Encore une fois bravo et félicitations à www.ingeny.fr.

   

Témoignages clients - Écrit par Dupond Jean-Francois PDFImprimerEnvoyer Publié le 19.01.11

J’ai fait appel à Ingeny pour un travail urgent pour le développement du site Fidelissimo.com.

Je dois dire que non seulement la réactivité est au top mais que le développement c’est  extraordinairement bien passé.
Si tous mes projets pouvaient se réaliser aussi bien …


Je ne peux que recommander Ingeny pour leur professionnalisme et leurs compétences .
A bientôt pour un prochain projet !


Whaz webmaster de Toilokdo.com :)

Toilokdo est un client de Ingeny.fr

   

Témoignages clients - Écrit par Dupond Jean-Francois PDFImprimerEnvoyer Publié le 24.11.10

Jeff a totalement répondu à nos attentes mais surtout a terminé dans les délais annoncés sans un jour de retard.

Il a également joué un rôle de consultant en apportant des idées très intéressantes à différents niveaux (ergonomie, référencement...).

Nous ferons sans aucun doute appel à lui pour d'autres projets web car il peut les gérer de a à z.

Nous recommandons donc chaudement Jeff mais laissez-lui tout de même encore un peu de temps pour travailler avec nous :)

Pierre Lillien

Stigmatix
   

MySQL - Écrit par Durand Franck PDFImprimerEnvoyer Publié le 11.11.10

Une chose à savoir avec les valeurs à virgules flottantes est qu'elles sont stockées de manières approximatives et non pas exacte comme le reste des valeurs.

A première vue sa ne pose pas de problème, sur une requête simple les valeurs retournées sont les bonnes, mais les problèmes arrivent quand on demande à MySQL de faire des calculs ou des comparaisons sur ces valeurs.

 

Le simple fait de demander le résultat d'un calcul sur un flottant retournera sa valeur approximative, par exemple :

CREATE TABLE test (val FLOAT(10.2));
INSERT INTO test VALUES ("3.2"), ("4.1");
SELECT SUM(val) FROM test;
// retourne 7.29999995231628 au lieu de 7.2 attendu

 

Dans un cas simple comme celui la il suffit d'utiliser la fonction ROUND(x, y) avec y égal a la précision après la virgule souhaitée :

SELECT ROUND(SUM(val, 2)) FROM test; // retourne 7.2

 

Egalement en utilisant les résultats dans les clauses de la requête d'autre problèmes apparaissent. Prenons l'exemple suivant :

CREATE TABLE test2 (i INT, val1 FLOAT(10.2), val2 FLOAT(10.2));
INSERT INTO test2 VALUES (1, 101.40, 21.40), (1, -80.00, 0.00);
SELECT SUM(val1) AS a, SUM(val2) AS b FROM test2 GROUP BY i HAVING a <> b;
// retourne a=21.4000015258789, b=22.3999996185303

 

Même en utilisant la fonction ROUND(x, y) cela ne résoudrai pas le problème ( Note pour plus tard : dépend de l'architecture du processeur ), car la valeur résultante est également stocké de manière approximative en mémoire, et l'ont se retrouverai avec des valeur en apparence égale malgré la clause HAVING a <> b.

La seul solution acceptable est de définir un niveau de précision dans lequel s’effectueront les comparaisons :

SELECT SUM(val1) AS a, SUM(val2) AS b FROM test2 GROUPE BY i HAVING ABS(a - b) > 0.001;
// ne retourne rien

 

En fonction de l'architecture du processeur utilisé, les résultat présenté ici peuvent être différent de ceux que vous obtiendrez car il n'existe pas de règle strict quand au calcul à virgules flottantes pour les processeur. Il est ainsi souvent répondu de multiplier le résultat par 1 afin d'obtenir une valeur exacte au lieu d'une valeur approximative, mais ce n'est valable que sur certain processeur, et cette solution est donc a proscrire !

Egalement comprenez bien que même si votre serveur vous répond correctement quand je montre ici que la réponse n'est pas celle attendu, cela ne sera pas forcément vrai sur un autre serveur, il est donc important de mettre en oeuvre les concepts présenté dans cet article !