Procédure stockée MySQL ou requête complexe
Quelle est la performance d'une Procédure Stockée? Est-il intéressant de les utiliser au lieu de la mise en œuvre d'une requête complexe en PHP/MySQL appel?
source d'informationauteur Arsham | 2009-07-20
Vous devez vous connecter pour publier un commentaire.
Procédures stockées de vous donner un petit boost de performance, mais surtout ils sont pour faire des tâches qui sont difficiles ou impossibles à faire avec une simple requête. Les procédures stockées sont grands pour la simplification de l'accès aux données pour de nombreux types de clients. Les administrateurs de base de l'amour parce qu'ils contrôlent la façon dont la base de données est utilisée plutôt que de laisser ces détails pour le développeur.
Oeil à l'index et de la table de conception pour obtenir de meilleures performances.
Aïe, j'avais de la haine pour quelqu'un de lire ces réponses et d'obtenir une fausse impression. Il y a vraiment des différences importantes entre les "Stocké Quelque chose", implémentations sur "MySQL" vs "SQL server/Oracle".
Voir: http://www.joinfu.com/2010/05/mysql-stored-procedures-aint-all-that/
Prenez une minute pour lire le reste de l'article et les commentaires. C'est court et vous aurez une bien meilleure compréhension des enjeux.
Comme m'a été signalé dans une précédente réponse de courtoisie de JohnFX:
Profiter.
Dans MySQL ou tout autre serveur SQL server comme MSSQL ou Oracle, procédures stockées augmenter considérablement la vitesse des requêtes en cause car ce sont déjà compilées. Les procédures stockées sont plus sûres que les requêtes directes et comme objet dans la base de données, ils peuvent être administrés par le propriétaire, donnant le droit d'accès pour chaque utilisateur.
L'utilisation de procédures stockées vous pouvez également masquer la logique des requêtes et des procédures et de donner à l'équipe de développement et les autres programmeurs, une "boîte noire" dans laquelle ils insérez params et de recevoir les résultats.
Définitivement procédures stockées déchire!!!!!
De MySQL 5.1 Documentation:
Stockées routines peut être particulièrement utile dans certaines situations:
Lorsque plusieurs applications clientes sont écrits dans différentes langues ou de travailler sur des plates-formes différentes, mais qui ont besoin d'effectuer les mêmes opérations de base de données.
Lorsque la sécurité est primordiale. Les banques, par exemple, utiliser des procédures stockées et des fonctions pour toutes les opérations courantes. Cela donne une cohérence et la sécurité de l'environnement, et des routines peut s'assurer que chaque opération est correctement connecté. Dans une telle configuration, les applications et les utilisateurs n'ont pas accès aux tables de base de données directement, mais peut seulement exécuter stockée spécifique routines.
Stockées routines peuvent fournir des performances améliorées en raison de la moindre information doit être envoyée entre le serveur et le client. La contrepartie est que cette augmentation de la charge sur le serveur de base de données, car plus le travail est fait sur le côté serveur et moins, c'est fait sur le client (application) de côté. Considérez-le si de nombreuses machines clientes (tels que les serveurs Web) sont desservies par un seul ou de quelques serveurs de base de données.
Stockées routines également vous permettre de disposer de bibliothèques de fonctions dans le serveur de base de données. C'est une caractéristique partagée par l'application moderne des langues qui permettent à une telle conception en interne (par exemple, à l'aide de classes). L'utilisation de ces client de l'application des fonctionnalités de langage est bénéfique pour le programmeur, même en dehors de la portée de l'utilisation de base de données.
Grossièrement simplifiée -
Procédure stockée de performance est égale ou légèrement mieux que le code sur le coût de la db de la charge du serveur. Puisque la plupart des systèmes db sont concernés par l'accès multi-utilisateur et sont à l'aide de matériel de base pour le serveur de base de données, l'utilisation de code de déchargement de la db server va probablement gagner ensemble. Avec des haut de gamme DB serveurs, > 4 cœurs, > 32 go de ram, SP charge est souvent pas un problème.
Procédures stockées;
N'optimisent pas au début.
Procédures stockées ont beaucoup d'autres avantages que la vitesse, la sécurité d'être en haut de la liste.
Dans un seul programmeur de l'environnement, les prestations peuvent être compensés par des SP de la programmation de la courbe d'apprentissage, SP framework de test, plusieurs méthodes de contrôle de révision - SP et le code, etc..
L'apprentissage et à l'aide d'un test et de profilage cadre va y répondre définitivement et vous guide afin d'offrir de meilleures "performances" de votre application que de simplement choisir SP ou des requêtes ad-hoc.
Réponse à "est-il utile" - Si vous n'avez pas de test/profilage cadre en place, vous aurez seulement deviner. Aucune réponse basé sur mon code et le matériel est probablement hors de propos sur le vôtre.
Mon expérience du monde réel sur de nombreux Perl/TCL/PHP/C applications web à l'aide de bases de données (Sybase,Oracle,MS SQL,MySQL,Postgres) stockées procs NE sont PAS grandement améliorer les performances sur l'ensemble. Mais je continue de les utiliser souvent, juste pour des raisons autres que la performance. Ils peuvent grandement améliorer un complexe spécifique de la requête, mais c'est rarement l'essentiel du code et le temps de traitement global.