Вася Патриков
Новичок
Снижение нагрузки. Разбиение одной большой таблицы на маленькие
Здравствуйте все. Вопрос на самом деле по чистому MySQL.
Однажды, правда очень непродолжительно, работал над проектом, в котором добрый дядя ведущий программист делал с БД следующую интересную вещь - брал, к примеру, таблицу `users` и делал из неё таблицы `users_1`, `uses_2`, ... причём так, что в каждой таблице хранилось не более, скажем, 10 тысяч строк. Ограничение по количеству строк и прозрачное управление всей этой "конструкцией" контролировалось дополнительным программным слоем. Аргументировал он это всё тем, что так, якобы, сервер баз данных "лучше" работает, и если запихать всё это обратно в одну таблицу, то работать он станет
"хуже". Пишу в кавычках, потому что подразумевается снижение/повышени производительности и т.п. Вообщем таким образом он искусственно увеличивал его производительность.
Сейчас у меня возникла такая же необходимость. При запуске в консоли top на серваке, видно что mysqld кипит и занимает в среднем 200% CPU. Приложение, которое он поддерживает жутко тормозит.
В связи с этим имеется ряд вопросов - правда ли всё это ? Отвечая на свой первый вопрос - почему это правда ? )) Связано ли это с каким либо типом таблиц ?
P.S. Из неполноценных и разрозненных знаний - таблицы innoDB поддерживают блокировку на уровне строк, MyISAM - на уровне таблиц. Не решится ли моя проблема трансформированием таблиц MyISAM в innoDB (хотя знаю, что MyISAM быстрее)... или я что то как всегда путаю ?
Здравствуйте все. Вопрос на самом деле по чистому MySQL.
Однажды, правда очень непродолжительно, работал над проектом, в котором добрый дядя ведущий программист делал с БД следующую интересную вещь - брал, к примеру, таблицу `users` и делал из неё таблицы `users_1`, `uses_2`, ... причём так, что в каждой таблице хранилось не более, скажем, 10 тысяч строк. Ограничение по количеству строк и прозрачное управление всей этой "конструкцией" контролировалось дополнительным программным слоем. Аргументировал он это всё тем, что так, якобы, сервер баз данных "лучше" работает, и если запихать всё это обратно в одну таблицу, то работать он станет
"хуже". Пишу в кавычках, потому что подразумевается снижение/повышени производительности и т.п. Вообщем таким образом он искусственно увеличивал его производительность.
Сейчас у меня возникла такая же необходимость. При запуске в консоли top на серваке, видно что mysqld кипит и занимает в среднем 200% CPU. Приложение, которое он поддерживает жутко тормозит.
В связи с этим имеется ряд вопросов - правда ли всё это ? Отвечая на свой первый вопрос - почему это правда ? )) Связано ли это с каким либо типом таблиц ?
P.S. Из неполноценных и разрозненных знаний - таблицы innoDB поддерживают блокировку на уровне строк, MyISAM - на уровне таблиц. Не решится ли моя проблема трансформированием таблиц MyISAM в innoDB (хотя знаю, что MyISAM быстрее)... или я что то как всегда путаю ?