Форум сайта python.su
ZZZСогласен. Для реализации сложной логики ее реализация на сервере быстрее (масло масляное :)).
Быстрее питьоньего кода. Иногда очень важно оптимизировать работу с базой, когда она является узким местом.
Конечно не стоит делать из БД контроллер.
ZZZИнтересно.
Ээээ… Нет. Самое главное тут то, что запросы к базе синхронны, а вот траблы при несинхронных изменениях известны – лично я сталкивался с повреждениями базы при множественных инсертах в несколько потоков (но там было всё сложно и я решил перейти на постгри).
LexanderНе понял, что вы хотели этим сказать. Можно уточнить?ZZZА как же ORM? :-)
Выделить всю работу с СУБД в отдельный класс - это просто удобство работы с кодом, сопровождения и т.п.
Отредактировано (Апрель 28, 2010 11:41:03)
Офлайн
LexanderБыло это год назад где-то. Приложение небольшое, несколько таблиц, несколько many-to-many отношений.EdО, уже что-то.
Пришли к выводу, что это нельзя использовать, если происходит интенсивная запись в базу
А поподробнее можно?
Офлайн
EdЯ подозреваю (судя по скорости), что использовался автокоммит. Т.е. у вас каждый инсерт заключался в отдельную транзакцию (режим работы по-умолчанию) - поэтому так долго.
Количество insert-ов порядка нескольких тысяч на круг. С mysql-ем это вылилось где-то в минуту, а с sqlite - минут пять или около того.
Офлайн
Скорее всего вы правы. Только для mysql тоже самое юзалось. Там бы я тоже мог(и собственно сделал потом) использовать bulk insert, но это уже другая история. Прирост производительности в несколько раз был вызван только сменой движка.
Офлайн
В mysql используется другой алгоритм блокировки таблиц, который к тому же зависит от типа используемых таблиц, которые, в свою очередь, могут быть как транзакционными, так и не… (что уже влияет на скорость работы).
Кроме того, операции вставки в mysql имеют по-умолчанию самый высокий приоритет.
А уж о конфигурационных переменных (в том числе буфере для вставок) можно статью писать.
Офлайн
LexanderБухгалтерская херотень – конкурент 1С в своём сегменте.
Интересно.
Могу предположить, что это система снятия данных с нескольких (десятков) датчиков. В этом случае легко превысить возможности СУБД.
LexanderДа, там была довольно тонкая работа с транзакциями.
Данные вставлялись единичными инсертами или пакетами. Т.е. было ли ручное управление транзакциями?
Офлайн
Ну, про транзакции после уточнения что за клиенты можно было и не отвечать :)
Офлайн