Снижение нагрузки. Разбиение одной большой таблицы на маленькие

whirlwind

TDD infected, paranoid
В смысле... удаляются автоматом? Вот я пользователь-дурак удаляю сущность контрагент, а мне автоматом удаляются все проведенные документы? По моему эта ситуации гораздо более редкая, чем запрет на удаление.
 

korchasa

LIMB infected
Автор оригинала: whirlwind
В смысле... удаляются автоматом? Вот я пользователь-дурак удаляю сущность контрагент, а мне автоматом удаляются все проведенные документы? По моему эта ситуации гораздо более редкая, чем запрет на удаление.
В "обычном" вебе таки нет. Удалили группу, удалились сообщения. Удалили товар, удалились его фотографии. А контрагентов вообще по идее удалять нельзя, а то смысл документов теряется.

Что-то мы от темы отклонились :)
 

FractalizeR

Новичок
Кстати, возвращаясь к теме топика, "разбиение одной большой таблицы на маленькие", которое тут приводится, это, похоже, эдакий Partitioning по-детски, на таблицах по 400Мб. Смех!
 

Alexandre

PHPПенсионер
А если не отключить, то ошибки полезут, из-за невозможности удалить то, что уже удалено самой базкой.
удалять ничего не нужно, нужно ставить флаг deleted
тогда вся целостность сохраниться.
 

Mols

Новичок
Ну на самом деле всё это спорно на счет удаления. Иногда можно и удалять(например если есть полноценный change log для таблиц).. иногда не надо. Но вот как могут полезть ошибки если выполняется запрос на удаление строки которой нет - мне не понятно. Это надо вместо запроса "DELETE.... WHERE foreign_key_id = X" что-то такое придумать, чтобы ошибки полезли. И это всё для того, чтобы сделать аналог внешних ключей с которым "не страшно". А с родными страшно... мда. Ещё наверное перед этим и транзакцию запускают а потом коммитят (видел такое реально. Вся база была в таблицах MyISAM)
 

FractalizeR

Новичок
Автор оригинала: Mols
Ещё наверное перед этим и транзакцию запускают а потом коммитят (видел такое реально. Вся база была в таблицах MyISAM)
Вообще-то MyISAM не поддерживает транзакции.

-~{}~ 08.09.09 13:03:

Автор оригинала: Alexandre
удалять ничего не нужно, нужно ставить флаг deleted
тогда вся целостность сохраниться.
Так 1С делает, кстати. Физическое удаление осуществляется отдельной обработкой.
 

Mols

Новичок
Автор оригинала: FractalizeR
Вообще-то MyISAM не поддерживает транзакции.
эмм.... ну я потому и написал, что не поддерживает, вроде понятно же... Просто не все, кто делает "самописные не страшные" аналоги внешним ключам это знают.
А для сохранения этой самой целостности "применяют транзакции" для "безопасных" таблиц MyISAM.
Говорю же.. сам видел такое в реально работающем проекте. Формируется список запросов к таблицам - и они выполняются последовательно. Перед началом - эти гении стартуют транзакцию, по завершению - коммитят. И это всё на MyISAM
 

Sawa

Новичок
(select * from product where id = 1) UNION ALL (select * from product where id = 2) order by id;
при некоторых селектах таблицы блокируются, теперь представим что запрос более сложный, с 3-4 join и еще union в придачу. Скажем имеем 10 таблиц по 400 мегов, оказывается что для того чтобы вытянуть 20-30 строк с лимитом, быстрее будет работать при обработке 2х таблиц и соответвенно 800 магами данных, чем с 4гб.
юниоры с критикой бросятся что неудобно, и мол есть кеширование, индексирование, штатные методы которые всем нравятся... но если бы оно нормально и быстро работало, мы бы никогда не увидели мемкешед и ему подобные платформы
не стесняемся и делаем новый велосипед, он возможно такой же как те что в магазине, носкил у девелопера качает... ;)

зы. в оффтоп ушли, изначально вопрос стоял - а что быстрее работает MyISAM или innoDB, и может ли текущая структура базы снижать нагрузку.

топикстартер, более конкретные данные бы =) смута зреет...
 

Alexandre

PHPПенсионер
юниоры с критикой бросятся что неудобно, и мол есть кеширование, индексирование, штатные методы которые всем нравятся... но если бы оно нормально и быстро работало, мы бы никогда не увидели мемкешед и ему подобные платформы
не стесняемся и дела
а можно по подробнее про memcached и ему подобные платформы???
 

Mols

Новичок
Alexandre
По моему он просто провоцирует ... типо Кащенизм)))
 

DiMA

php.spb.ru
Команда форума
Alexandre, хорош флудить. ТС - это наш Санёк .-)
 

FractalizeR

Новичок
Автор оригинала: Alexandre
а можно по подробнее про memcached и ему подобные платформы???
Да, мне тоже интересно. Т.е. memcached, по мнению автора, придумали потому, что все остальное работает... плохо?!
 

Alexandre

PHPПенсионер
Т.е. memcached, по мнению автора, придумали потому, что все остальное работает... плохо?!
надо научиться отделять: мухи отдельно, котлеты отдельно...
РМБД - служат для хранения данных основанных на связях (relations)

memcached - это хранение key-value данных в оперативной памяти, и предназначается оно вовсе не для долгосрочного хранения данных

а вот про подобные ему платформы было бы интересно услышать.
 

korchasa

LIMB infected
Автор оригинала: Sawa
при некоторых селектах таблицы блокируются, теперь представим что запрос более сложный, с 3-4 join и еще union в придачу. Скажем имеем 10 таблиц по 400 мегов, оказывается что для того чтобы вытянуть 20-30 строк с лимитом, быстрее будет работать при обработке 2х таблиц и соответвенно 800 магами данных, чем с 4гб.
Дай структуру базы и запрос. Юниоры хотят попробовать.
Автор оригинала: Sawa мемкешед и ему подобные платформы
Ты все таки про кэширование или про key-value?
Автор оригинала: Sawa
зы. в оффтоп ушли, изначально вопрос стоял - а что быстрее работает MyISAM или innoDB, и может ли текущая структура базы снижать нагрузку.
Так мы вроде бы и сейчас про это, не?

-~{}~ 09.09.09 10:53:

Автор оригинала: Alexandre
а вот про подобные ему платформы было бы интересно услышать.
http://bjclark.me/2009/08/04/nosql-if-only-it-was-that-easy/
 

pilot911

Новичок
Автор оригинала: Alexandre
надо научиться отделять: мухи отдельно, котлеты отдельно...
РМБД - служат для хранения данных основанных на связях (relations)

memcached - это хранение key-value данных в оперативной памяти, и предназначается оно вовсе не для долгосрочного хранения данных

а вот про подобные ему платформы было бы интересно услышать.
про мемкеш неправда, я знаю соцсети, где хранятся в оперативке на распределенных серверах около 800 гигабайт мемкеша
 

korchasa

LIMB infected
Автор оригинала: pilot911
про мемкеш неправда, я знаю соцсети, где хранятся в оперативке на распределенных серверах около 800 гигабайт мемкеша
Что неправда? Что он не гарантирует сохранность данных?
 

pilot911

Новичок
Александр сказал "и предназначается оно вовсе не для долгосрочного хранения данных"


вопрос в долгосрочности, а не в надежности
 

korchasa

LIMB infected
pilot911
Как можно гарантировать долгосрочность хранения данных, если нет сохранности? Хватит к формулировкам придираться. Разговор не об этом.
 

Alexandre

PHPПенсионер
про мемкеш неправда, я знаю соцсети, где хранятся в оперативке на распределенных серверах около 800 гигабайт мемкеша
я тоже знаю, в Контакте ;)
только там хранится оперативная информация...а не долговременная ...

если хотим хранить долговременную, надо использовать memcachedb...

про Redis надо знать, что PHP экстеншен написан удивительно криво. да и его использование очень специфично, можно использовать пока объем данных вмещается в память, если нет - то начинают бить тормоза. Как врочем и sedna

Что неправда? Что он не гарантирует сохранность данных?
просто pilot911 не в теме

вопрос в долгосрочности, а не в надежности
вопрос в скорости доступа прежде всего...

в соц сети потерять сессию или говно-сообщение - не беда...

-~{}~ 09.09.09 13:27:

http://bjclark.me/2009/08/04/nosql-if-only-it-was-that-easy/
эту ссылку хотелось бы увидеть от того, кому был задан вопрос...
 
Сверху