Je place beaucoup de lignes dans une table de base de données qui était auparavant presque vide, puis je crée un rapport basé sur les données de cette table. Bien que la table soit indexée, les requêtes prennent beaucoup trop de temps et Im devine que c'est parce que Hibernate effectue une analyse de table complète à chaque fois pour la requête au lieu d'utiliser les index car elle croit que la table de base de données ne contient que quelques lignes. Comment puis-je mettre à jour les statistiques de base de données Hibernate pour la table afin qu'elle puisse ensuite construire un plan de requête approprié?Comment obtenez-vous Hibernate pour mettre à jour les statistiques de la base de données?
Répondre
Mise en veille prolongée peut fonctionner native SQL statements, de cette façon vous pouvez également exécuter analyze
:
Query analyze = session.createSQLQuery("analyze");
analyze.executeUpdate();
Voir aussi la documentation officielle sur native SQL statement execution.
Merci, mais je ne comprends toujours pas quand les statistiques sont mises à jour, hibernate fait-il un appel à analyser si souvent. Ou est la base de données elle-même qui décide d'exécuter l'analyse parfois. Ou est-ce que ça ne fonctionne jamais à moins que je ne le fasse moi-même comme vous le suggérez? –
Hibernate ne l'appelle pas, mais la base de données elle-même le fait (elle maintient un compteur pour chaque table, et s'il y avait beaucoup de changements dans une table, les statistiques sont mises à jour). Comme je l'ai écrit dans le commentaire ci-dessus: "La version récente de H2 met automatiquement à jour les statistiques, vous n'avez donc pas besoin de le faire manuellement." –
- 1. DataGridView pour mettre à jour la base de données
- 2. Comment puis-je mettre à jour des champs spécifiques dans la base de données par Hibernate?
- 3. Mettre à jour les valeurs dans la base de données
- 4. JPA/Hibernate: comment mettre à jour automatiquement les champs de la mise à jour d'entité
- 5. Comment mettre à jour la base de données en utilisant Hibernate?
- 6. Hibernate ne parvient pas à mettre à jour la collection d'éléments dans la base de données
- 7. Mettre à jour les champs dans la base de données
- 8. Tirer les statistiques de la base de données pour afficher
- 9. Java Hibernate: Mettre à jour l'entrée la plus récente dans la base de données MySql
- 10. comment mettre à jour dataGrid dans la base de données
- 11. Hibernate ne doit mettre à jour que certains champs de la base de données
- 12. Comment mettre à jour la base de données Firebase
- 13. Hibernate select avant de mettre à jour
- 14. Comment mettre à jour les données de la base de données mais sans mettre à jour l'image dans php
- 15. Comment mettre à jour la base de données?
- 16. Comment mettre à jour la base de données avec MyBatis?
- 17. Comment mettre à jour la base de données
- 18. Comment mettre à jour dans la base de données
- 19. Comment mettre à jour la base de données du serveur
- 20. Comment mettre à jour la base de données en php?
- 21. Comment mettre à jour la base de données SQL
- 22. comment extraire les données mises à jour de la grille et les mettre à jour dans la base de données
- 23. Mettre à jour la base de données mysql de java
- 24. ASP.Net: Comment mettre à jour la base de données?
- 25. Comment mettre à jour la base de données SQLite
- 26. Comment mettre à jour les données de la base de données mysql sans rafraîchir la page
- 27. Comment mettre à jour les données de ma base de données dans mon application Java avec Hibernate?
- 28. Comment ajouter les résultats de PayPal IPN pour mettre à jour la base de données
- 29. Statistiques de la table SQL, comment déterminer quelles statistiques mettre à jour?
- 30. mettre à jour une base de données
Je suppose que vous pouvez créer une procédure stockée que vous appelez en utilisant l'option [native sql] (http://docs.jboss.org/hibernate/orm/3.3/reference/en/html/querysql.html#d0e13646) Hibernate fournit. – rene
@rene Je ne vois pas où les procédures stockées entrent, doit être une manière plus simple –
La version récente de H2 met automatiquement à jour les statistiques, vous n'avez donc pas besoin de le faire manuellement. Dans de nombreux cas, le problème est que la requête ne bénéficie d'aucun index. Je suggère d'analyser quelles requêtes sont vraiment lentes, puis vérifiez pourquoi l'index n'est pas utilisé pour celles-ci (en utilisant 'explain select' ou' explain analysis select'). –