|
|
|
| Здравствуйте возникла следующая проблема:
Имеется страница, которая делает достаточно большое количество запросов к дб (порядка 100) и вследствии прирожденной лени проставить нужные блокировки.. в общем нету блокировок. Но восстанавливать базу каждый день не хочеться (предположительно обращений к странице может быть достаточно много).. Целостность данных важна. Как я понимаю можно:
1. таки прописать нужные блокировки
2. поставить блокировки на все таблицы с самого начала или даже на базу, и разблокировать в самом конце
3. перейти на InnoDB (возможность есть) и поставить на всю сессию одну большую транзакцию
Пожалуйста помогите оценить проигрыш в производительности при 2,3 варианте
Заранее спасибо. | |
|
|
|
|
|
|
|
для: dimonstt
(07.02.2008 в 13:29)
| | Объём базы данных большой? | |
|
|
|
|
|
|
|
для: cheops
(07.02.2008 в 13:42)
| | Порядка 30-40 таблиц, самые большие из которых (около 10) до 100 000 записей. Это по максимому беру. | |
|
|
|
|
автор: rusty_angel (08.02.2008 в 16:30) |
|
|
для: dimonstt
(07.02.2008 в 13:29)
| | Для обеспечения целостности в большинстве случае достаточно внешних ключей. Только MyISAM это не умеет, так что InnoDB или BDB.
Ну а если отрабатывает быстро, то можно и блокировки, но писанины больше и поддерживать такой код будет сложнее. | |
|
|
|
|
|
|
|
для: rusty_angel
(08.02.2008 в 16:30)
| | Внешние ключи, тобишь ид записи, используются для связи между таблицами. При чем они-то здесь?
Если вы имели ввиду транзакцию на время генерации всей страницы, то все понятно, кроме того насколько примерно медленнее это будет использования блокировок в локальных местах. Примерно такая же производительность, 2 раза, в 5 медленее? И какие побочные эффекты это может дать?
Если я непонятно ставлю вопрос - то пожалуйста скажите - я переформулирую. | |
|
|
|