Blog d'un tunicien quelconque, Ou ya po de poemes ou de litterature, encore moins des crises d'ame ou d'histoires intimes et surtout pas des debats ou de polemique
... Et brabbi Excuse My French et Mon Francais
jeudi, septembre 28, 2006
samedi, septembre 23, 2006
ALICE AU CORE DE MySQL-5.1 :PART2: L'Optimiseur | The Optimizer
L'optimisation des requêtes SELECT se fait dans le fichier sql_select.cc et certaines des optimisations effectuées par MYSQL sont :
- Si une dans une requête, un champ "field = constante", alors elle change toute les références de "field" à "constante" : "a=b AND b=c AND c=1" devient "b=1 AND a=1 AND c=1"
- Suppression des conditions constantes ou inutiles : ( 1 = 1, b = b, ..).
- Suppression des conditions impossibles : "item IS NULL" alors que "item" ne s'annule jamais.
- Retourne "Impossible WHERE" ou MySQL détecte rapidement les commandes SELECT impossibles (WHERE 1 = 2) et ne retourne aucune ligne.
- Suppression des parentheses inutiles: ((a AND b) AND c OR (((a AND b) AND (c AND d)))).
- Retourne le COUNT(*) sans "WHERE" d'une table simple directement depuis les informations de la table.
- etc..
Par exemple, MySQL peut changer :
SELECT ... WHERE 5 = aen
SELECT ...WHERE a = 5
handle_select()
mysql_select()
JOIN::prepare()
setup_fields()
//{{{ L'optimisation commence ici ...
JOIN::optimize()
optimize_cond()
opt_sum_query()
make_join_statistics()
get_quick_record_count()
choose_plan()
/* Trouve la meilleur fcon d'acces aux tables spécifié par l'utilisateur */
optimize_straight_join()
best_access_path()
/* Trouvez les plans les plus optimaux parmi le sous-ensemble de tous les
combinaisons possibles des requetes */
greedy_search()
best_extension_by_limited_search()
best_access_path()
/* Exécutez une recherche approfondie du plan optimal */
find_best()
make_join_select()
// }}} L'optimisation s'arrete ici
JOIN::exec()
- Bien que le mot "JOIN" apparaisse, ses routines d'optimiseur sont les memes pour pour toutes les requetes.
- L'identation dans l'expositions du diagramme la methodes d'appel. Ainsi vous pouvez voir que handle_select() appelle mysql_select() qui appelle JOIN::prepare() qui appelle le setup_fields(), et ainsi de suite.
- La première partie de mysql_select() est JOIN::prepare() pour l'analyse du contexte, l'identification des metadata, et la transformations de quelques sous requetes.
- L'optimiseur est JOIN::optimize() et toutes les routines subalternes.
- Quand l'optimiseur finit son travail, JOIN::exec() execute ce que JOIN::optimize() vient de décidé .
- Les routines optimize_cond() et opt_sum_query() font les transformations.
- La routine make_join_statistics() remonte toute les informations qu'elle trouve au sujet des index qui pourraient être utiles pour accéder aux tables de la requete.
vendredi, septembre 22, 2006
ALICE AU CORE DE MySQL
Moi je trouve que c'est très amusent même. Premièrement, par curiosité parce que en tant que développeur je me demandent toujours a quoi ressemble le core d'un SGBD pareil; deuxièmement et du point de vue technique, la simple lecture du code n'est pas inutile ! Pas de tout!
En lisant la documentation des dev (disponible ici[en]) ou le code source, on peut profiter de deux choses :
- On peut chopper pas mal de trucs signalés par les développeurs de MySQL dans les fichiers sources /* en tant que notes dans les commentaires */ et qui n'existent pas dans le manuel de d'utilisateur final.
- En lisant les algorithmes utilisés par MySQL, on pourra bien comprendre comment MySQL gère et répond à nos requêtes, et par suite comment les améliorer, les meilleus choses a faire, les raccourcis a prendre, etc...
mardi, septembre 19, 2006
The wrong way to upgrade MySQL
Expect a longer post in the near future on upgrade procedures. For now enjoy this quote from a gentoo user illustrating the worst way to upgrade.
linolium: is there a way to wipe every single table and start over from scratch?
linolium: ( the upgrade from mysql 4 to 5 didn’t go as smoothly as planned
me: did you read the upgrade notes?
linolium: no, I just hoped that portage would be kind enough to do those things for me
America is revealed as one nation under four faces of God
| ||
|
samedi, septembre 16, 2006
State of Web Development 2006
State of Web Development 2006
Entre le 15 juin et 15 juillet 2006 SitePoint et Ektron ont conduit une enquête sur le developpement Web. Plus de 5000 developpeurs Web ont participés en répondant à une enquête détaillé au sujet de leur travail.
Les résultats montrent l'état de l'industrie aujourd'hui, et aussi les tendances principales que peuvent nous attendre dans les 12 mois à venir.
MySQL Consulting
mais ca va pas la tête ou quoi ??