Вагиф Абилов (object) wrote,
Вагиф Абилов
object

Latency, latency...

Несколько дней бился над программой конвертации базы данных, которой предполагается быть запущенной ночью и сделать свою работу не более, чем за час, и которая упорно требовала часов десять, после чего ее останавливали - кому она нужна такая?

Сегодня утром сидел с профайлером и заподозрил, что дело не в неспешности команд типа INSERT, а в том, что перед ними запускается пара команд, считывающих пару полей из базы и проверяющих их на корректность. То есть код на C# был таким:

1. Read 1st value via SELECT.
2. Read 2nd value via SELECT.
3. Compare values for consistency.
4. Run SQL INSERT.

Быстродействие - примерно 3-4 цикла в секунду. А циклов - 160 000.

Переписал сохраненную процедуру, так что считывание и проверка данных в пп. 1-3 производится в самой процедуре 4. Код на C# лишь вызывает сохраненную процедуру. Запустил программу: больше 100 циклов в секунду! Вся конвертация прошла за полчаса.

Единственное пока объяснение: network latency. И очень похоже, что так оно и есть.
Subscribe
  • Post a new comment

    Error

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 22 comments