Занимает ли хранение списка разделенных запятыми в базе данных много места в памяти? - PullRequest
4 голосов
/ 22 марта 2012

Мы работаем над проектом, который имеет некоторый дизайн атрибутов продукта.Я не думаю, что сохранение атрибутов через запятую было бы хорошей практикой.Но мой друг сказал мне, что разделенный запятыми список сэкономит место.

Я прочитал статью в stackoverlow Действительно ли плохо хранить список с разделителями в столбце базы данных?

Но никто не упомянул о проблеме с памятью, все хвалили за ведение отдельных записей.Кто-нибудь может рассказать мне настоящую историю?

Ответы [ 3 ]

4 голосов
/ 22 марта 2012

Нет обоснования, основанного на пространстве. Размер данных на самом деле может быть меньше путем нормализации, поскольку вам не нужно вводить дополнительные символы в данные (запятые или все, что вы используете для разделения).

Ваш друг, вероятно, просто боится перспективы написания "сложных" запросов, связанных с объединением таблиц, и пытается найти для этого обоснование (но не успешно).

Помимо этого уже достаточно написано о том, почему вы нормализуете данные.

2 голосов
/ 22 марта 2012

Ответ Билла в связанном вопросе охватывает вопросы довольно хорошо. Существует небольшое, если таковое имеется, реальное преимущество в хранении данных в такой ненормализованной форме. Использование многозначных полей обойдется вам в долгосрочной и, вероятно, краткосрочной перспективе.

Если вы на 100% уверены, что вашему приложению НИКОГДА не потребуется обрабатывать (фильтровать, упорядочивать, группировать и т. Д.) Содержимое ваших сериализованных данных (список через запятую), то это не окажет влияния на ваше приложение. В большинстве случаев, когда люди делают это предположение, они «обжигают пальцы», так как требования к приложению меняются со временем.

Для обработки многозначных полей потребуется больше памяти и больше циклов ЦП из-за полного сканирования таблиц, необходимого для выполнения чего-либо, кроме простого чтения содержимого поля. Поиск в Google «проблем с производительностью многозначных полей mysql» дает много результатов.

0 голосов
/ 22 марта 2012

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...