Timeout avec Command et ODBC | |
louis | 25-May-2006/1:59:19+2:00 |
Quelqu'un a peut-etre rencontré un cas ou en récuperant le resultat d'un query sur un port ODBC (SQLServer), disons pick odbc-port 1, rebol "hangs" (comment on dit en francais?). Le query prend environ 15 secondes avant de retourner des resultats (selon query analyzer), il est donc sain d'esprit, mais toutefois ne retourne rien avant la 15eme seconde. Je veux dire: tout vient a la fois lorsque le query se termine. Alors je soupconne un probleme genre timeout. J'essaie de changer system/schemes/default/timeout mais sans effet | |
reboltof | 25-May-2006/11:28:54+2:00 |
Je n'ai jamais connu d'autre comportement: toutes les données arrivent en une fois, à la fin du query. Ce qui ne pose pas de problème, puisque nous ne travaillons pas en asynchrone... Cependant, si je souhaitais changer le comportement, je chercherais plutôt du coté de ODBC... As-tu essayé avec des drivers natifs (Oracle ou MySQL) ? | |
Goldevil | 25-May-2006/12:53:53+2:00 |
Ce comportement me semble normal mais j'admets que cela peut-être ennuyant. Ne peux-tu pas découper ton query par blocs de manière à en réaliser plusieurs dans une boucle par exemple. Cela sera globalement plus lent mais tu pourras traiter les résultats au fur et à mesure. Je suis justement en train d'adapter une application à SQLServer via ODBC. L'application était uniquement compatible avec mysql-protocol de DocKimbel mais j'avais bien structuré mon framework de manière à pouvoir l'adapter à plusieurs DB. Ce qui m'embête le plus, c'est que mysql-protocol et les accès DB de rebol/command ne sont pas compatible dans leur manière d'être invoqués. | |
louis | 25-May-2006/16:18:28+2:00 |
Tout à fait d'accord avec le comportement coté Rebol. Les resultats sont disponibles sur le port une fois le query completé. Je me suis mal expliqué. Le cas que j'essaie de solutionner est que Rebol raccroche completement. Kaput, gelé, plus rien à faire autre que de tuer le process. En testant, j'ai pu relier ce comportement au fait que le query comporte une clause order by qui force le DB engine à sorter les résultats à la fin, et donc, contrairement à un query normal, le DB engine ne rend pas de rows vers ODBC à mesure qu'il les trouve. En testant aussi je vois que si le delai que prend le DB engine à rendre ses rows est court, genre 2-3 secondes, ca ne cause pas de probleme. Si c'Est > 10 secondes (approx) Rebol raccroche. Je sais pas exactement ou se situe la limite encore. C'Est pourquoir je regardais du coté d'un timeout. J'utilise cette combinaison Command/ODBC/SQLServer depuis pres de 3 ans avec succes mais c'est la deuxieme fois que ce probleme survient. La premiere fois j'ai contourné en changeant le query mais ce n'est pas logique. Merci de vos opinions. | |
reboltof | 25-May-2006/20:35:59+2:00 |
Je travaille couramment avec la combinaison REBOL/ODBC/SQLServer depuis de nombreuses années, et les queries que je dois réaliser portent sur des millions de rows, ordered, et sont réalisés en plusieurs minutes (parfois > 10'). Et là je dois te décevoir: je n'ai jamais rencontré le problème que tu décris... Comme je travaille avec les settings par défaut de REBOL, je pense que tu devrais plutôt chercher du coté de ton ODBC... Je suis curieux de voir la solution à ton problème. | |
Goldevil | 25-May-2006/23:10:14+2:00 |
Je n'ai pas encore vu ce comportement mais c'est intéressant a savoir. Je dois encore travailler sur la conversion de mon appli vers sql server mais une fois terminée je vais faire des tests et voir si j'ai le même problème avec des queries complexes. | |
louis | 26-May-2006/1:27:38+2:00 |
Je vous tiens au courant. A plus. | |
Login required to Post. |