|
Загрузка данных из MSSQL в Cache
|
|||
---|---|---|---|
#18+
День добрый! Упражняюсь с загрузкой с сервера АСУТП в Cache данных. Добился скорости около 4 тыс. записей в секунду. Индексов нет, глобаль получается в виде: Код: plaintext
Код: plaintext
Все ли я правильно делаю? Есть ли резервы по повышению быстродействия? Ниже привожу текст программы Код: plaintext 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2016, 17:20 |
|
Загрузка данных из MSSQL в Cache
|
|||
---|---|---|---|
#18+
DirksDR, Ну если хочется экстрима, то можно отключить журналирование, и/или писать напрямую в глобалы без SQL или объектов. А так в Caché полно возможностей, чтобы увидеть слабые места, какая строчка медленней всего, и зная это можно пробовать ее оптимизировать. Если процессор не загружен на 100% и диск не упирается в очередь, значит запас у системы еще есть, и возможно есть что оптимизировать. хотя 100% CPU это еще не показатель что все далается правильно ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2016, 17:44 |
|
Загрузка данных из MSSQL в Cache
|
|||
---|---|---|---|
#18+
DirksDR, select * замените на список только необходимых полей. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2016, 21:05 |
|
Загрузка данных из MSSQL в Cache
|
|||
---|---|---|---|
#18+
DirksDR, Посмотрите материалы Школ - почти каждый год рассматривается тема оптимизации производительности. Например, %Persistent:%SortBegin() %Persistent:%SortEnd() ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2016, 21:36 |
|
Загрузка данных из MSSQL в Cache
|
|||
---|---|---|---|
#18+
DirksDR, Ваша тестовая среда тормозит архитектурно, как любая x86-32 система. Ограничения на размер кэша добавляет и пробная версия. Сейчас вы скорее всего упираетесь в диск. С бОльшим кэшем (не менее 1 GB на вскидку) вы сможете позволить себе больше, пути для улучшения алгоритма есть. Если не требуется мгновенная доступность данных, я бы упростил структуру хранения до стандартной и лучше завел бы дополнительные sql-индексы, кои достраивал бы в фоне, отдельными процессами. На (хотя бы) двухядерном компе будет работать быстрее, чем когда все делается в одном процессе, как у вас сейчас. А м.б. тормозит не запись в Cache, a чтение из sql, проверяли? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2016, 22:27 |
|
Загрузка данных из MSSQL в Cache
|
|||
---|---|---|---|
#18+
DirksDRДобился скорости около 4 тыс. записей в секунду.Мало.
Код: plaintext
... |
|||
:
Нравится:
Не нравится:
|
|||
06.04.2016, 09:06 |
|
Загрузка данных из MSSQL в Cache
|
|||
---|---|---|---|
#18+
Спасибо за отклики. servit, Alexey Maslov Вы опять оказались правы. Больше 80% времени занимает чтение данных с сервера MSSQL. Наверное, это простительно, т.к. до него больше 100км. Диск бОльшую часть времени отдыхал, я думаю, что за счет использования $SORTBEGIN/$SortEnd. Любопытно было наблютать в Task Managere, как увеличивается память занятая процессом. Видимо, предварительная сортировка выполняется в памяти процесса, я думал, что в кеше базы данных. Процессор был занят на 15-22%. А это значит, что есть резервы по скорости загрузки! Линкованные таблицы я использовал. Но "insert .... select ...." сделать не получилось. Выдается ошибка компиляции: Код: plaintext 1. 2. 3. 4.
Текст подпрограммы, вызвавший ошибку: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16.
В то же время курсор отработал без ошибки: Код: plaintext 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
06.04.2016, 12:51 |
|
Загрузка данных из MSSQL в Cache
|
|||
---|---|---|---|
#18+
DirksDR , Или можно воспользоваться новой фичей Caché Monitor: Query Cloud (есть два видео с демонстрацией) ... |
|||
:
Нравится:
Не нравится:
|
|||
06.04.2016, 13:03 |
|
Загрузка данных из MSSQL в Cache
|
|||
---|---|---|---|
#18+
DirksDRДает ли преимущества использование JDBC подключения? Я использовал ODBC... Разумеется есть преимущества. JDBC сам по себе медленней из-за Java. вот можно глянуть подробнее ... |
|||
:
Нравится:
Не нравится:
|
|||
06.04.2016, 13:09 |
|
Загрузка данных из MSSQL в Cache
|
|||
---|---|---|---|
#18+
DirksDRЛинкованные таблицы я использовал. Но "insert .... select ...." сделать не получилось.Потому что есть ограничения, которые упомянуты в самом первом примечании. "AS IS" запрос применить не получится, но кардинально упростить код, сведя его к этому запросу, можно, разбив запрос на два этапа (что Вы и сделали): Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9.
... |
|||
:
Нравится:
Не нравится:
|
|||
06.04.2016, 13:37 |
|
|
start [/forum/topic.php?fid=39&msg=39208764&tid=1556499]: |
0ms |
get settings: |
11ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
30ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
46ms |
get tp. blocked users: |
1ms |
others: | 281ms |
total: | 402ms |
0 / 0 |