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

Форум MySQL

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

 

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

вид форума:
Линейный форум Структурный форум

тема: Нужны ли транзакции?
 
 автор: Crux   (23.04.2006 в 14:42)   письмо автору
 
 

есть три таблицы tabl1, tabl2 и tabl3

таблицы tabl1 и tabl2 связвнны полем ID
таблицы tabl2 и tabl3 связанны полем ID_2

также известно что таблица tabl3 может (но не обязательно) содержать огромное количество записей

удаление какой-либо записи из таблицы tabl1 ведёт за собой удаление записей из таблиц tabl2 и tabl3, удаление происходит снизу вверх, т.е. сначало удаление происходит в таблице tabl3 потом в tabl2 и в конце в tabl1 (связь таблиц не нарушается при каком-либо сбое)

вопрос: стоит ли исползовать тип таблиц для поддержки транзакций для данного случая?

PS пока задавал вопрос сам на него себе и ответил, но всё-таки хочется услышать стороннее мнение и возможно рассуждения по данному поводу.

   
 
 автор: cheops   (23.04.2006 в 17:47)   письмо автору
 
   для: Crux   (23.04.2006 в 14:42)
 

Если вы будете использовать транзакции, то вынуждены будете использовать таблицы типа InnoDB - а в них реализовано каскадное удаление данных, т.е. удаляя запись из одной таблицы у вас автоматически удаляются записи из связанных таблиц. Т.е. транзакции вроде как и не нужны всё будет в один запрос удаляться, а при использовании таблиц типа MyISAM транзакции вообще говоря нужны, но они не реализованы для этого типа таблиц.

   
 
 автор: Crux   (23.04.2006 в 18:28)   письмо автору
 
   для: cheops   (23.04.2006 в 17:47)
 

Вот-вот...
и какой тип таблицы выбрать?
InnoDB где транзакции есть, но они не нужны или MyISAM где транзакций нет, но там-то они и нужны.
Можно краткую сравнительную характеристику?

   
 
 автор: cheops   (23.04.2006 в 20:40)   письмо автору
 
   для: Crux   (23.04.2006 в 18:28)
 

База данных в MySQL организуется как поддиректория каталога mysql/data. Таблицы базы данных организуются как файлы данной директории. Каждая MyISAM-таблица хранится на диске в трех файлах, имена которых совпадают с названием таблицы, а расширение может принимать одно из следующих значений:
- frm — содержит структуру таблицы, в файле данного типа хранится информация об именах и типах столбцов и индексов;
- MYD — файл, в котором содержатся дынные таблицы (MYData);
- MYI — файл, в котором содержатся индексы таблицы (MYIndex).
Таблицы MyISAM обладают рядом особенностей.
- Данные хранятся в кросс-платформенном формате, это позволяет переносить базы данных с сервера непосредственным копированием файлов, минуя промежу-точные форматы.
- Максимальное число индексов в таблице составляет 64 (32 до появления вер-сии 4.1.2). Каждый индекс может состоять максимум из 16 столбцов. Начиная с версии 5.1 можно увеличить число индексов в таблице до 128 при помощи пара-метра --with-max-indexes=N.
- Начиная с версии MySQL 4.1, для каждого из текстовых столбцов может быть назначена своя кодировка.
- Допускается индексирование текстовых столбцов, в том числе и переменной длины.
- Поддерживается полнотекстовый поиск.
- Каждая таблица имеет специальный флаг, указывающий правильность закрытия таблиц. Если сервер останавливается аварийно, то при его повторном старте неза-крытые флаги сигнализируют о возможных сбойных таблицах, сервер автомати-чески проверяет их и пытается восстановить.
- Расширенная поддержка кодировок.

К особенностям таблиц InnoDB относят следующие.
- В отличие от MyISAM и BDB, таблицы для InnoDB не создаются в базах данных и для каждой из таблиц не выделяется отдельного файла данных. Исключение — файл определения с расширением frm, который все же создается (по умолчанию в базе данных test). Все таблицы хранятся в едином табличном пространстве, по-этому имена таблиц должны быть уникальными.
- Хранение данных в едином табличном пространстве позволяет снять ограниче-ния на объем таблиц, т. к. файл с таблицами может быть разбит на несколько час-тей и распределен по нескольким дискам или даже хостам.
- Данный тип таблиц поддерживает автоматическое восстановление после сбоев.
- Обеспечивается поддержка транзакций.
- Это единственный тип таблиц в MySQL, поддерживающий внешние ключи и каскадное удаление.
- Выполняется блокировка на уровне отдельных записей.
- Расширенная поддержка кодировок.
- Таблицы типа InnoDB надёжнее MyISAM и рушатся при достижении объёма в несколько гигабайт, однако заметно уступают в скорости MyISAM (иногда в ра-зы) и не поддерживают полнотекстовый поиск.

   
 
 автор: Crux   (23.04.2006 в 21:04)   письмо автору
 
   для: cheops   (23.04.2006 в 20:40)
 

т.е. если я правильно понял,
при суммарном объёме таблиц в несколько сот метров, выбор между InnoDB и MyISAM сводится к особенностям этих типов?

   
 
 автор: cheops   (23.04.2006 в 23:32)   письмо автору
 
   для: Crux   (23.04.2006 в 21:04)
 

Э... не понял вопрос.

   
 
 автор: Crux   (24.04.2006 в 20:23)   письмо автору
 
   для: cheops   (23.04.2006 в 23:32)
 

если записей в таблице будет около 3000 - 5000 , разница в скорости обработки запросов будет заметна или нет?

   
 
 автор: cheops   (24.04.2006 в 22:45)   письмо автору
 
   для: Crux   (24.04.2006 в 20:23)
 

Если проиндексировать столбцы, то не очень...

   
Rambler's Top100
вверх

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