Что лучше использовать в mysql?

232
21 октября 2017, 18:56

Что лучше и быстрее?

Миллион записей в одной таблице или по 400 записей в 2500 таблицах? Для справки - я хочу инвентарь каждого пользователя хранить в отдельных таблицах или всё в одну сгружать и вытаскивать по id пользователя?

Answer 1

Если вы беспокоитесь, что ваша таблица с миллионом записей будет перегружена - то вы волнуетесь зря! MySQL умеет работать с миллионами записей.

Вот несколько советов, если вам необходимо работать с большими данными:

  • Используйте индексы. Индексы усложняют вставку, но упрощают выборку. С ним ваши select/delete запросы будут быстрее.
  • Разбивайте ваши крупные select-выборки на чанки в вашем приложении. Например, php-массив в 300 000 записей из БД занимал у меня 250мб памяти. Разбиение на маленькие группы данных при помощи OFFSET LIMIT позволили мне сохранить память и не так сильно нагружать БД.
  • Если вы предполагаете, что работа с миллионами записей у вашего приложения будет нормой - посмотрите в сторону MongoDB, она лучше справляется с большими данными, но хуже с меньшими.
  • Почитайте про SELECT INTO OUTFILE, LOAD DATA INFILE, если вас интересуют подробности больших select и insert запросов.

Соглашусь с sanmai и добавлю ещё один момент. Определённо, вам не нужно создавать такое огромное количество таблиц: кроме нерациональности , это сильно усложняет логику работы приложения (когда создавать новые таблицы, поддержание связей между таблиц в актуальном состоянии). Попробуйте использовать связующие таблицы, которые будут хранить связь между пользователем и его предметом. 1 связь - 1 запись.

Answer 2

Каждая новая таблица расходует ресурс сервера на поддержание открытого файла. Даже если вы настроите open_files_limit при помощи обычного метода, ресурсы сервера все равно будут использоваться под вещи, которые не нужны. Кроме того, интересно может повести себя буферный пул. Потому, если вы не знаете что так точно будет хуже, лучше однородные данные в пределах одного сервера держать в одной таблице.

Миллион записей — это пустяки в наши дни.

READ ALSO
Цена вариативного товара в корзину

Цена вариативного товара в корзину

При помощи данного кода можно занести цену в корзину из произвольного поляНо как только задаешь формат вывода цены на экран в контейнере...

244
Поиск по статьям и новостям на сайте

Поиск по статьям и новостям на сайте

Интересует, целесообразность использовать sphinx или иную поисковую машину для организации поиска по сайтуХотелось бы, чтобы поиск сортировался...

215
Как через ссылку добавлять в сессию yii2 [требует правки]

Как через ссылку добавлять в сессию yii2 [требует правки]

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

228