Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Блокировка таблицы - надо ли ?

Сообщения:  [1-10] 

 
 автор: cheops   (21.10.2005 в 14:18)   письмо автору
 
   для: Duran   (21.10.2005 в 08:39)
 

Он имеется в 3.23, но не включён по умолчанию - необходимо вручную настраивать my.ini для его запуска...

   
 
 автор: Duran   (21.10.2005 в 08:39)   письмо автору
 
   для: cheops   (20.10.2005 в 22:30)
 

Я использую MySQL 3.23 (пока), на сколько я помню, в описании не поподался тип InoDB, но где-то читал (указывался, как неизбежный выбор). Защищенные транзакции это хорошо, но разве они есть в 3.23 ? В любом случае обязательно попробую :)

   
 
 автор: cheops   (20.10.2005 в 22:30)   письмо автору
 
   для: Duran   (20.10.2005 в 15:43)
 

MyISAM в принципе хорошие таблицы, очень быстрые, но не поддерживают транзакции, можно блокировать только всю таблицу целиком. Немного обидно забирать всю таблицу для того чтобы обновить только одну запись - в этот момент все остальные пользователи не смогут получить к таблице доступ и будут ждать. На InnoDB перейти можно воспользовавшись оператором ALTER TABLE
ALTER TABLE tbl TYPE = InnoDB

Этот тип позволит выполнять транзакции на уровне отдельных записей, а не целой таблицы
START TRANSACTION;
куча разных запросов
COMMIT;

Здесь "куча разных запросов" выполняется как один SQL-запрос, если происходит собой - вы откатываетесь в состояние таблицы, которое было до START TRANSACTION при помощи запроса ROLLBACK. Т.е. последовательность SQL-операторов либо выполняется от начала до конца, либо вообще не выполняется.

   
 
 автор: Duran   (20.10.2005 в 15:43)   письмо автору
 
   для: cheops (из вне)   (20.10.2005 в 15:31)
 

Ух ты :)) Cheops (из вне) надо себе тоже такой ник завести :)).
Текс... а чем MyISAM плохи ? Кажись они поддерживают одновременную запись минимум с 2-х мест. А как перейти на innoDB и что-же делать с блокировкой ?

   
 
 автор: cheops (из вне)   (20.10.2005 в 15:31)
 
   для: Duran   (20.10.2005 в 13:20)
 

Это в Internet будет происходить или в локальной сети? При работе с деньгами лучше всё таки пользоваться полноценными транзакциями, т.е. использовать тип таблиц не MyISAM, а скажем InnoDB - будет работать медленнее, но зато надёжно.

   
 
 автор: Duran   (20.10.2005 в 13:20)   письмо автору
 
   для: cheops   (20.10.2005 в 12:22)
 

Кроме INSERT будет еще и UPDATE :-).
Я поясню.
БД представляет из себя хранилище договоров, по которым проходят поставки и платежи. При запросе опред. договора по нему выдается дебет (положительная разница между суммой платежей и суммой поставок) , кредит (отридцательный дебет), сальдо (разница между дебетом и кредитом) и эти самые поставки и платежи.

Исполнитель может подкоректировать уже введенную запись (UPDATE) естественно на основе SELECT, добавить платеж/поставку в выбранный договор посмотреть че захочет.
Исполнителей много, смежные договора тоже есть.

Каждый платеж при вводе должен ссылаться (оплата по факту) или иметь ссылку (предоплата - поставка введена позже) на тавар, за который платится, таким образом происходит выравнивание - погашение платежа или поставки. На одну сумму может быть нескоко поставок и наоборот.

   
 
 автор: cheops   (20.10.2005 в 12:22)   письмо автору
 
   для: Duran   (20.10.2005 в 08:24)
 

SELECT не страшен - для него блокировку проводить не надо, часто ли будет осушествляться вставка INSERT и используется ли информация из SELECT для вставки... Не может так случится, что будет два одновременных INSERT, которые попортят целостность базы - если такая ситуация маловероятна (например, как на форуме), то блокировку можно не использовать.

   
 
 автор: Duran   (20.10.2005 в 08:24)   письмо автору
 
   для: cheops   (19.10.2005 в 17:42)
 

Пользователей около сотни. Вставляемые данные зависят от существующих особенно в некоторых пунктах. Ожидается временное (раза 2-3 в сутки) увеличение плотности запросов типа SELECT и не исключено, что кто нить попытается сделать запись.

   
 
 автор: cheops   (19.10.2005 в 17:42)   письмо автору
 
   для: Duran   (19.10.2005 в 16:04)
 

У таблицы будет много пользователей? Зависят ли вставляемые данные от уже помещённых в базу данных?

   
 
 автор: Duran   (19.10.2005 в 16:04)   письмо автору
 
 

С базой планируется достаточно интенсивный обмен чтения/записи, рекомендуется ли использовать блокировку таблицы/записи, если да, то как лучше это реализовать ?
Я так понимаю, нужно проверять наличие блокировки, если она есть то что делать ?

   

Сообщения:  [1-10] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования