|
Firebird выполнение запроса без ожидания результата
|
|||
---|---|---|---|
#18+
Подскажите пожалуйста, будет ли выполняться код после приведенного ниже куска, не дожидаясь результатов от сервера? Или будет где-то стопориться, если сервер занят, например? Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
... |
|||
:
Нравится:
Не нравится:
|
|||
28.09.2012, 17:15 |
|
Firebird выполнение запроса без ожидания результата
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
28.09.2012, 17:38 |
|
Firebird выполнение запроса без ожидания результата
|
|||
---|---|---|---|
#18+
buserЗдесь... Код: c# 1.
? Т.е. если у меня не задан callback в BeginExecute..., то не нужно вызывать EndExecute...? И еще: можно ли вызывать BeginExecute... примерно раз в минуту для 50-60 коротеньких insert'ов, или так лучше не делать? Суть проблемы в следующем: есть один поток, который регулярно (раз в минуту) делает пачку insert'ов. Есть другой поток, который очень редко делает ресурсоемкий select (секунд на 10). И когда этот поток выполняется, то первый вешается на insert'е, пока select не закончится, вот я и пытаюсь этого избежать. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.09.2012, 19:58 |
|
Firebird выполнение запроса без ожидания результата
|
|||
---|---|---|---|
#18+
Подскажите плз, почему приложение со временем падает (тихо, без exception), если я выполняю запросы вот так: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23.
а если вот так, то все нормально Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25.
Методы вызываются каждую минуту для выполнения однотипных insert'ов (порядка 60-80 штук) ... |
|||
:
Нравится:
Не нравится:
|
|||
12.10.2012, 19:43 |
|
Firebird выполнение запроса без ожидания результата
|
|||
---|---|---|---|
#18+
Вот вперлось Вам держать шаренный dbConn. Есть же connection pool... Да и TestConnection() наверное что-то делает...? Да? Все пр-мы не решить запихивая в бекграунд дооолгие операции. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.10.2012, 20:00 |
|
Firebird выполнение запроса без ожидания результата
|
|||
---|---|---|---|
#18+
В TestConnection сидит такое Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16.
С коннекшн pool не работал, сори. Поизучаю, но вроде с поддержанием одного соединения со старта проги проблем никогда не было. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.10.2012, 20:03 |
|
Firebird выполнение запроса без ожидания результата
|
|||
---|---|---|---|
#18+
Connection strings for Firebird Начните с простого - избавьтесь от глобальной dbConn. Открывайте соединения по необходимости и киляйте их сразу... ... |
|||
:
Нравится:
Не нравится:
|
|||
12.10.2012, 20:10 |
|
Firebird выполнение запроса без ожидания результата
|
|||
---|---|---|---|
#18+
Ок, спасибо за совет, займусь этим ... |
|||
:
Нравится:
Не нравится:
|
|||
12.10.2012, 20:15 |
|
Firebird выполнение запроса без ожидания результата
|
|||
---|---|---|---|
#18+
buserОткрывайте соединения по необходимости и киляйте их сразу... Подскажите, не могу разобраться. Как быть с транзакциями? В приложении с одним постоянным соединением я создаю транзакцию, делаю commit после 40-ка insertoв, и далее по кругу. Мне не понятно, что будет с транзакцией, если я сделаю Connection.Close(), как велит pool? Для нее не страшно, если происходит close и коннект уходит в пул? Можно ли ей делать Commit, если коннект в пуле? Т.е. если раньше у меня было Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
то используя pool - надо так? Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17.
... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2012, 11:23 |
|
Firebird выполнение запроса без ожидания результата
|
|||
---|---|---|---|
#18+
Pallaris, 1 соединение на 1 UnitOfWork Код: c# 1. 2. 3. 4. 5. 6. 7.
... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2012, 12:24 |
|
Firebird выполнение запроса без ожидания результата
|
|||
---|---|---|---|
#18+
Lelouch, проблема в том, что команды не явно идут одна за одной, а вызываются из разных частей проги. Что-то типа Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19.
Т.е. надо бы по-хорошему в методе DoSomeWork перед циклом открыть соединение, запустить транзакцию, а в конце сделать коммит. Но я бы хотел всю рутину работы с БД инкапсулировать в классе myDb, чтобы не нужно было управлять соединениями и транзакциями вне этого класса. Что-то типа как сейчас у меня: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133. 134. 135. 136. 137. 138. 139. 140. 141. 142. 143. 144. 145. 146. 147. 148. 149. 150. 151. 152. 153. 154. 155. 156. 157. 158. 159. 160. 161. 162. 163. 164. 165. 166. 167. 168. 169. 170. 171. 172. 173. 174. 175. 176. 177. 178. 179. 180. 181. 182. 183. 184. 185. 186. 187. 188. 189. 190. 191. 192. 193. 194. 195. 196. 197. 198. 199. 200. 201. 202. 203. 204. 205. 206. 207. 208. 209. 210. 211. 212. 213. 214. 215. 216. 217. 218. 219. 220. 221. 222. 223. 224. 225. 226. 227. 228. 229. 230. 231. 232. 233. 234. 235. 236. 237. 238. 239. 240. 241. 242. 243. 244. 245. 246. 247. 248. 249. 250. 251. 252. 253. 254. 255. 256. 257. 258. 259. 260. 261. 262. 263. 264. 265. 266. 267. 268. 269. 270. 271. 272. 273. 274. 275. 276. 277. 278. 279. 280. 281. 282. 283. 284. 285. 286. 287. 288. 289. 290. 291. 292. 293. 294. 295. 296. 297. 298. 299. 300. 301. 302. 303. 304. 305. 306. 307. 308. 309. 310. 311. 312. 313. 314. 315. 316. 317. 318. 319. 320. 321. 322. 323. 324. 325.
... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2012, 12:40 |
|
Firebird выполнение запроса без ожидания результата
|
|||
---|---|---|---|
#18+
Pallaris, модифицируйте свой класс (примерно так): Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
И используйте его так же как писали выше: Код: c# 1. 2. 3. 4. 5.
Или я что то не так понял? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2012, 14:38 |
|
Firebird выполнение запроса без ожидания результата
|
|||
---|---|---|---|
#18+
уф, скока кода. Вроде выше написали, что надо открывать коннект, когда что-то надо выполнить. Тут либо так: Код: c# 1. 2. 3. 4. 5. 6. 7. 8.
либо сделать буфер, куда будете закидывать запросы и например по 50 штук скидывать на выполнение: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
методы проверки соединения можно исключить при выполнении транзакции, просто добавьте try-catch. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2012, 14:42 |
|
Firebird выполнение запроса без ожидания результата
|
|||
---|---|---|---|
#18+
еще вот тут почитайте. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2012, 14:48 |
|
Firebird выполнение запроса без ожидания результата
|
|||
---|---|---|---|
#18+
LelouchPallaris, Код: c# 1. 2. 3. 4. 5.
Или я что то не так понял? Все-таки хотелось бы, чтоб экземпляр класса базы данных был один на всю программу. Который бы управлял транзакциями и соединением. И разработчику не нужно было париться над созданием соединений, запросов и объектов - ему дали объект базы данных, вот и пожалуйста, пользуйся им, передавай запросы. Если б выполнялся запрос и делался сразу коммит, то все было бы просто. Вот скажите, может я зря парюсь по поводу транзакций, и большой разницы нет, что я сделаю 40+ запросов за секунду в одной транзакции, или же буду делать для каждого запроса begin()-commit()? Я вот думаю, второй вариант - отстой. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2012, 15:06 |
|
Firebird выполнение запроса без ожидания результата
|
|||
---|---|---|---|
#18+
Pallaris, У вас будет 1 экземпляр вашего класса на 1 UnitOfWork , в своем классе вы реализуете например логику управления транзакциями и т.д. P.S. Я именно это и имел ввиду в последнем примере? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2012, 15:11 |
|
Firebird выполнение запроса без ожидания результата
|
|||
---|---|---|---|
#18+
Lelouch, P.S. Я именно это и имел ввиду в последнем примере? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2012, 15:11 |
|
Firebird выполнение запроса без ожидания результата
|
|||
---|---|---|---|
#18+
pyroman69либо сделать буфер, куда будете закидывать запросы и например по 50 штук скидывать на выполнение: Хм, как вариант, мб прокатит - я вызываю SafeExecuteQuery(stirng query_), где будет что-то типа Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21.
... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2012, 15:15 |
|
|
start [/forum/topic.php?fid=20&fpage=191&tid=1405791]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
29ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
92ms |
get tp. blocked users: |
2ms |
others: | 12ms |
total: | 180ms |
0 / 0 |