|
|
Apr
12
2006
|
Verrouillage, concurrentialité et performance de MySQL |
|
|
|
Programmation -
Base de données
|
|
Ecrit par Kamal AOUDA
|
|
12-04-2006 |
|
Verrouillage, concurrentialité et performance de MySQL
Les mécanismes de verrouillage de
MySQL différent selon
le type de table utilisé.
Dans les tables de type MyISAM et HEAP, seul le verrouillage de niveau table est
supporté. Cela pourrait être pénalisant pour les traitements parallèles et la
concurrentialité des applications qui font majoritairement appel à des
opérations d’écriture. Or cela n’est pas le cas de la plupart des applications
de commerce électronique qui comme nous l’avons vu dans la partie 3 font de
nombreuses sélections, peu d'effacements, des modifications et des insertions
basées sur des clés. Les tables MyISAM sont donc bien optimisées pour ce genre
d’application.
Les tables de type InnoDB supportent le verrouillage de niveau ligne. Elles
offrent un meilleur degré de concurrentialité mais elles consomment plus de
mémoire que les verrous de table. Notons par ailleurs que les verrous de niveau
ligne:
* Sont plus lents que les verrous de table surtout lorsqu’ils sont appliqués à
une grande portion de la table.
* Donnent de piètres résultats avec les requêtes Group By ou tout autre requête
qui scanne l’intégralité d’une table.
* Ont un coût d’administration qui est supérieur à celui des verrous de table.
Cela dit, les verrous de table sont plus performants que les verrous de ligne
dans les cas suivants :
* Les opérations de lecture.
* Les opérations de modification portant sur des clés précises (comme celles de
l’exemple ci-dessous).
UPDATE table_name SET column=value WHERE unique_key#
DELETE FROM table_name WHERE unique_key=#
* De nombreux scans / GROUP BY sur toute la table, sans aucune écriture .
Les autres niveaux de verrouillage possibles dans MySQL sont :
* Les verrous de niveau page : disponibles uniquement avec les tables de type
BDB leur performance est tributaire de la taille de la page (ensemble constitué
par deux ou plusieurs lignes). Avec ces verrous la concurentialité est d’autant
plus faible que la taille des pages est grande.
* Le versionage : un thread qui écrit et de nombreux autres qui lisent. Dans ce
cas Les verrous s’appliquent aux opérations d’écriture et non aux opérations de
lecture.
Le tableau 59 résume la relation entre la performance, les mécanismes de
verrouillage, les moteurs de stockage et la concurentialité.
|
Verrouillage |
Concurentialité |
Charge de travail |
Moteur de stockage |
| Table |
La plus faible |
Faible |
MyISAM, Heap, Merge |
| Ligne / page |
Moyenne |
Moyenne |
InnoDB /BDB |
| Versionage |
La plus élevée |
Elevée |
InnoDB |
|
|
Dernière mise à jour : ( 12-04-2006 )
|
|
Professional Development with Web APIs : Google, eBay, Amazon.com, MapPoint, FedEx |
|
Professional Development with Web APIs : Google, eBay, Amazon.com, MapPoint, FedEx
Un livre idéal pour les programmeurs .Net qui veulent intégrer à
leurs applications de commerce électronique, les fonctionnalités
offertes à travers les services web de Google, Fedex, Ebay, Amazon et
MapPoimt.
Après un bref rappel des concepts de base, ce livre aborde
des sujets avancés comme l'appel des API à partir d'appareils mobiles ou
des applications développées avec VBA, l'envoi d'un fax via l'API Paypal,
la création de votre propre web API (cette liste n'est pas limitative).
A la fin de ce livre vous trouverez des études de cas qui montrent
comment utiliser les API précitées pour développer rapidement une
application CRM et un un tableau de bord électronique.
Références
http://www.wrox.com/WileyCDA/WroxTitle/productCd-0764584456.html, Denise M. Gosnell, Wrox,
ISBN: 0-7645-8445-6,
April 2005,
324 pages
|
|
|