2015-09-18 1 views
0

Je me demandais si je pouvais vérifier la base de données toutes les secondes pour obtenir les champs qui sont plus anciens que la date actuelle.Vérifier la base de données toutes les secondes

select o from Entity as o where o.date <= CURRENT_TIMESTAMP 

Pour des performances, il est bon est pas du tout? Y a-t-il un moyen de faire autrement?

Je construis une webapp JSF en utilisant CDI et EJB à travers la persistance JPA.

Plus de détails:

J'ai mis une liste d'action dans une table appelée "Actions". Ces actions doivent être exécutées lorsque Actions.fieldDate est égal à la date actuelle.

Je suis actuellement en utilisant Java EE7 avec le dernier 8. JDK

+0

Quelle version de Java EE utilisez-vous? – lametaweb

+0

Il est difficile de dire que quelque chose est bon ou mauvais pour la performance sans un contexte détaillé et des tests, mais de manière générale, «vérifier la base de données chaque seconde» et «performance» ne vont pas ensemble. – Brandon

+0

Qu'essayez-vous exactement de faire? C'est un problème XY. Si vous nous dites le problème que vous essayez de résoudre, nous pouvons vous aider à le résoudre plutôt que de juger votre solution. http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem – Brandon

Répondre

0

Vous pouvez utiliser la vue matérialisée

Cela permet un accès beaucoup plus efficace, au prix de certaines données potentiellement hors -rendez-vous amoureux. Il est le plus utile dans les scénarios d'entreposage de données , où les requêtes fréquentes des tables de base réelles peuvent être cher. - wikepedia

0

Tout dépend de la fréquence à laquelle les entrées sont effectuées dans votre table Actions et de l'horodatage qu'elles peuvent contenir. Par exemple, si vous attendez que les entrées soient faites à l'avance, disons au moins 5 minutes avant que les actions puissent être exécutées, vous pouvez réduire votre fréquence de lecture, soit par une vue matérialisée avec un ttl de 5 minutes. Vous pouvez également avoir un déclencheur sur votre table d'actions qui vous indique une nouvelle insertion de ligne, puis le lire et le planifier en conséquence.