Автоматическое продление таблиц

dzen_code

Новичок
Добрый день.

Допустим, у нас есть таблица users, и в ней накопилось довольно много записей. Как можно сделать так, чтобы если таблица набирала определенное количество записей, создавалась новая и поле Id продолжало инкрементироваться отталкиваясь от последней вставки в предыдущую таблицу?

Все это нужно для оптимизации производительности, ведь как известно, когда много записей, начинают появляться торзмоза.
 

Adelf

Administrator
Команда форума
Все это нужно для оптимизации производительности, ведь как известно, когда много записей, начинают появляться торзмоза.
А тормоза уже появились?
И... данные используются все постоянно или обычно только самые свежие?
 

dzen_code

Новичок
А тормоза уже появились?
И... данные используются все постоянно или обычно только самые свежие?
Добрый день.

Я сделал вывод о тормозах, основываясь на свои поисковых запросах "предел записей в таблице SQL", как в реальности не знаю.

Я говорю пока в теории, допустим это таблица со статьями и выборка идет случайно, ведь люди читают разные статьи могут выбрать 10 статью, а могут 100 000 статью. Если кратко, то меня интересует как устроены базы данных у высоко-нагруженных сервисов.
 

antson

Новичок
Партнер клуба
@dzen_code, с какой субд работаете ? если муська, то какой движок ?

20 млн . если это реальные юзеры, а не спам база, то как-то у меня когнитивный диссонанс.

у сайта с такой базой юзеров онлайн должен быть 1млн уников в сутки.

У вас что-то типа фишек.нет ?
 
Последнее редактирование:

Adelf

Administrator
Команда форума
@dzen_code, ну во первых, есть правило - ""не тормозит - не оптимизируй" :)
Во-вторых, если есть возможность, то скорее всего 18 июня в Москве будет мастер-класс Димы Бородина, он там за 8 часов расскажет реально очень много полезного про то, как устроены базы данных у очень нагруженных проектов( С прошлого года - http://devconf.ru/ru/archive/devconf2016/offer/88 )
В-третьих, может @antson чего полезного расскажет прямо сейчас :)
 

dzen_code

Новичок
@dzen_code, ну во первых, есть правило - ""не тормозит - не оптимизируй" :)
Во-вторых, если есть возможность, то скорее всего 18 июня в Москве будет мастер-класс Димы Бородина, он там за 8 часов расскажет реально очень много полезного про то, как устроены базы данных у очень нагруженных проектов( С прошлого года - http://devconf.ru/ru/archive/devconf2016/offer/88 )
В-третьих, может @antson чего полезного расскажет прямо сейчас :)
Спасибо.
 

fixxxer

К.О.
Партнер клуба
@dzen_code, универсального ответа на этот вопрос не существует - все проекты разные, для соцсети будет одно решение, для какого-нибудь SAAS-а другое. Надо исходить из ситуации, и смотреть, что именно тормозит. Вообще все интересное начинается, когда данные физически не помещаются на один сервер, пока помещаются, все намного проще ;)

Если интересует как вообще делают - посмотрите вот эту презентацию:

https://www.slideshare.net/alexeyrybak/largescale-projects-development-scaling-lamp
 

antson

Новичок
Партнер клуба
тут нужно смотреть почему тормозит.

например самая жопа, если у тебя MyISAM у таблиц
а на хит авторизованного пользователя идут 2 запроса
select * from users where login= and hash=
update users set last_vizit=now() where id=
 

dzen_code

Новичок
@dzen_code, универсального ответа на этот вопрос не существует - все проекты разные, для соцсети будет одно решение, для какого-нибудь SAAS-а другое. Надо исходить из ситуации, и смотреть, что именно тормозит. Вообще все интересное начинается, когда данные физически не помещаются на один сервер, пока помещаются, все намного проще ;)

Если интересует как вообще делают - посмотрите вот эту презентацию:

https://www.slideshare.net/alexeyrybak/largescale-projects-development-scaling-lamp
Благодарю.
 

dzen_code

Новичок
тут нужно смотреть почему тормозит.

например самая жопа, если у тебя MyISAM у таблиц
а на хит авторизованного пользователя идут 2 запроса
select * from users where login= and hash=
update users set last_vizit=now() where id=
Хм. Интересно. У меня как раз выборка некоторых полей, и обновление поля last_action при каждом обращении авторизованного пользователя. Формат MyISAM. Как можно это облегчить?
 

fixxxer

К.О.
Партнер клуба
У меня как раз выборка некоторых полей, и обновление поля last_action при каждом обращении авторизованного пользователя. Формат MyISAM
Оу. Если у вас так, вам стоит заняться оптимизацией существующего кода, а не бить на таблицы.
Для начала неплохо бы понимать, чем myisam отличается от innodb и что вообще физически происходит внутри базы.

Советую вот эту книжку: High Performance MySQL. PDF-ку можно найти бесплатно ;)
 

dzen_code

Новичок
Оу. Если у вас так, вам стоит заняться оптимизацией существующего кода, а не бить на таблицы.
Для начала неплохо бы понимать, чем myisam отличается от innodb и что вообще физически происходит внутри базы.

Советую вот эту книжку: High Performance MySQL. PDF-ку можно найти бесплатно ;)
тут нужно смотреть почему тормозит.

например самая жопа, если у тебя MyISAM у таблиц
а на хит авторизованного пользователя идут 2 запроса
select * from users where login= and hash=
update users set last_vizit=now() where id=
Ой, прошу прощения, у меня innoDB, я знал это, просто ошибся, я точно не могу сказать все различия, но мне известно что в innoDB можно создавать связки.

Спасибо за книжку.
 

fixxxer

К.О.
Партнер клуба
Не суть важно, кстати. В книге, которую я посоветовал, дается понимание происходящего в базе, и уже на основе этого рецепты по оптимизации.

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

dzen_code

Новичок
Не суть важно, кстати. В книге, которую я посоветовал, дается понимание происходящего в базе, и уже на основе этого рецепты по оптимизации.

Мы тут можем набросать тысячу частных советов из практики, конечно. Но если вы хотите не верить нам на слово, а разобраться, стоит прочитать книгу. С пониманием сути придет и понимание лучших решений для вашего конкретного случая.
ОК.
 

antson

Новичок
Партнер клуба
@S.Chushkin, query cache у него из-за постоянных апдейтов как раз и не работает ;(
@dzen_code, и обязательно разберись как нужно писать запросы, чтобы квери кеш при выборке результата начал работать.
 

WMix

герр M:)ller
Партнер клуба
Как можно сделать так, чтобы если таблица набирала определенное количество записей, создавалась новая и поле Id продолжало инкрементироваться отталкиваясь от последней вставки в предыдущую таблицу?
mysql поддерживает партиционирование
 

antson

Новичок
Партнер клуба
@WMix, я про это тоже хотел написать. Но средство это не однозначное. В данном случае - это как дать гранату в руки без инструкций
 
Сверху