|
|
|
|
|
для: Duran
(21.10.2005 в 08:39)
| | Он имеется в 3.23, но не включён по умолчанию - необходимо вручную настраивать my.ini для его запуска... | |
|
|
|
|
|
|
|
для: cheops
(20.10.2005 в 22:30)
| | Я использую MySQL 3.23 (пока), на сколько я помню, в описании не поподался тип InoDB, но где-то читал (указывался, как неизбежный выбор). Защищенные транзакции это хорошо, но разве они есть в 3.23 ? В любом случае обязательно попробую :) | |
|
|
|
|
|
|
|
для: Duran
(20.10.2005 в 15:43)
| | MyISAM в принципе хорошие таблицы, очень быстрые, но не поддерживают транзакции, можно блокировать только всю таблицу целиком. Немного обидно забирать всю таблицу для того чтобы обновить только одну запись - в этот момент все остальные пользователи не смогут получить к таблице доступ и будут ждать. На InnoDB перейти можно воспользовавшись оператором ALTER TABLE
ALTER TABLE tbl TYPE = InnoDB
|
Этот тип позволит выполнять транзакции на уровне отдельных записей, а не целой таблицы
START TRANSACTION;
куча разных запросов
COMMIT;
|
Здесь "куча разных запросов" выполняется как один SQL-запрос, если происходит собой - вы откатываетесь в состояние таблицы, которое было до START TRANSACTION при помощи запроса ROLLBACK. Т.е. последовательность SQL-операторов либо выполняется от начала до конца, либо вообще не выполняется. | |
|
|
|
|
|
|
|
для: 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 - будет работать медленнее, но зато надёжно. | |
|
|
|
|
|
|
|
для: cheops
(20.10.2005 в 12:22)
| | Кроме INSERT будет еще и UPDATE :-).
Я поясню.
БД представляет из себя хранилище договоров, по которым проходят поставки и платежи. При запросе опред. договора по нему выдается дебет (положительная разница между суммой платежей и суммой поставок) , кредит (отридцательный дебет), сальдо (разница между дебетом и кредитом) и эти самые поставки и платежи.
Исполнитель может подкоректировать уже введенную запись (UPDATE) естественно на основе SELECT, добавить платеж/поставку в выбранный договор посмотреть че захочет.
Исполнителей много, смежные договора тоже есть.
Каждый платеж при вводе должен ссылаться (оплата по факту) или иметь ссылку (предоплата - поставка введена позже) на тавар, за который платится, таким образом происходит выравнивание - погашение платежа или поставки. На одну сумму может быть нескоко поставок и наоборот. | |
|
|
|
|
|
|
|
для: Duran
(20.10.2005 в 08:24)
| | SELECT не страшен - для него блокировку проводить не надо, часто ли будет осушествляться вставка INSERT и используется ли информация из SELECT для вставки... Не может так случится, что будет два одновременных INSERT, которые попортят целостность базы - если такая ситуация маловероятна (например, как на форуме), то блокировку можно не использовать. | |
|
|
|
|
|
|
|
для: cheops
(19.10.2005 в 17:42)
| | Пользователей около сотни. Вставляемые данные зависят от существующих особенно в некоторых пунктах. Ожидается временное (раза 2-3 в сутки) увеличение плотности запросов типа SELECT и не исключено, что кто нить попытается сделать запись. | |
|
|
|
|
|
|
|
для: Duran
(19.10.2005 в 16:04)
| | У таблицы будет много пользователей? Зависят ли вставляемые данные от уже помещённых в базу данных? | |
|
|
|
|
|
|
| С базой планируется достаточно интенсивный обмен чтения/записи, рекомендуется ли использовать блокировку таблицы/записи, если да, то как лучше это реализовать ?
Я так понимаю, нужно проверять наличие блокировки, если она есть то что делать ? | |
|
|
|
|