locked
Одна транзакция аль тыщу? RRS feed

  • Вопрос

  • Есть метода, коия хватает данные отовсюда и хочет записать это всё в таблицу базы данных, при этом для каждой добавляемой аль обновляемой записи нужно подсчитать кой чего в базе ещё. Данных до кучи, сиквел временами пыхтит до мёртвых блокировок и таймаутов. Интерисует, что будет, ежели я каждую добавляемую аль обновляемую запись буду в своей транзакции производить и тут же её комитить. Общая транзакция не интересует, пропадёт пара строк и ладно. Будет ли сиквел теперь пыхтеть от мильёна транзакий?
    23 апреля 2013 г. 10:13

Ответы

  • Истина посередине. Максимальная производительность вставки получается где-то между 1 и 1000000. Конкретное значение зависит от конфигурации сервера и размера вставляемой записи.
    23 апреля 2013 г. 14:02
  • This is usually a try approach. I'd say, 10K rows at once sounds like a reasonable number. You may experiment with

    500,

    1000

    10K

    and see what will perform the best.


    For every expert, there is an equal and opposite expert. - Becker's Law


    My blog

    24 апреля 2013 г. 18:48

Все ответы

  • лучше накапливать буфер в N-строк и вставлять пачками


    http://www.t-sql.ru

    • Предложено в качестве ответа YatajgaModerator 23 апреля 2013 г. 20:38
    • Помечено в качестве ответа Maksim MarinovMicrosoft contingent staff, Moderator 25 апреля 2013 г. 10:00
    • Снята пометка об ответе Radu2000 29 апреля 2013 г. 7:20
    • Отменено предложение в качестве ответа Radu2000 29 апреля 2013 г. 7:21
    23 апреля 2013 г. 11:12
    Модератор
  • Истина посередине. Максимальная производительность вставки получается где-то между 1 и 1000000. Конкретное значение зависит от конфигурации сервера и размера вставляемой записи.
    23 апреля 2013 г. 14:02
  • Кароче, никто точно не знает?

    24 апреля 2013 г. 18:37
  • This is usually a try approach. I'd say, 10K rows at once sounds like a reasonable number. You may experiment with

    500,

    1000

    10K

    and see what will perform the best.


    For every expert, there is an equal and opposite expert. - Becker's Law


    My blog

    24 апреля 2013 г. 18:48
  • Мы точно знаем, что точного ответа нет.
    25 апреля 2013 г. 6:38
  • Опытным путём установил, что одну транзакцию с 10 000 записей SQL сервер обрабатывает быстрее чем 10 000 транзакций по одной записи. Примерно раза в 3-4 быстрее.
    28 апреля 2013 г. 17:12
  • Опытным путём установил, что одну транзакцию с 10 000 записей SQL сервер обрабатывает быстрее чем 10 000 транзакций по одной записи. Примерно раза в 3-4 быстрее.

    вы просто не умеете их готовить, разница может быть в сотни раз

    http://www.t-sql.ru

    29 апреля 2013 г. 4:30
    Модератор
  • сообщите рецепт готовки и не занимайтесь пустословием

    29 апреля 2013 г. 7:19
  • сообщите рецепт готовки и не занимайтесь пустословием


    для начала научитесь вежливости и чтению официальных источников: http://msdn.microsoft.com/ru-ru/library/dd425070(en-us).aspx

    http://www.t-sql.ru

    29 апреля 2013 г. 7:45
    Модератор
  • а вашей вежливости хватит на весь этот форум?
    26 октября 2013 г. 7:32
  • Видимо вежливости ты так и не научился. Жаль.

    Сделаем содержимое сообщества лучше, вместе!

    26 октября 2013 г. 9:15
    Модератор