Плохой дизайн базы данных - моя таблица слишком велика?

У меня плохо спроектированная база данных. Одна из самых важных таблиц содержит более 11 000 записей. Мы хотели бы расширить нашу систему, и мне интересно, если бы размер этой таблицы увеличился в 5 раз, было бы это проблемой? Его размер 15360 КБ ... если это важно.


Я использую phpMyAdmin, сервер - это Fedora Linux (ничего особенного), нагрузка небольшая. В нем хранится практически все, что использует наша система.

Сэмвайз, не могли бы вы дать описание того, что делает база данных, а также конкретные функции и структуру этой таблицы? Записи 11k могут быть ничем или в зависимости от обстоятельств могут привести к огромному снижению производительности.

Noah Goodrich 07.10.2008 20:55
ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
3
1
4 774
14
Перейти к ответу Данный вопрос помечен как решенный

Ответы 14

Какая СУБД? Какой сервер? Какая нагрузка? Какое приложение?

Кроме того: 11.000 записей - это вообще ничего. Даже в MS Access. :-)

Обновлено: Итак, я предполагаю, что вы используете довольно недавний MySQL с таблицами MyISAM. Теоретически вы можете заполнить таблицу миллионами записей. В зависимости от того, как вы с ними работаете (много соединений / или нет, много запросов / обновлений / удалений / или нет), вам не нужно делать ничего особенного. Поместите правильный индекс в таблицу, и все будет в порядке.

Даже если есть СУБД excel, 11к ничего не будет.

David Basarab 07.10.2008 20:53

OTOH - тогда можно было начать новую «таблицу». :-D Без шуток, я видел, как люди так поступали.

Tomalak 07.10.2008 20:59

Что вы имеете в виду под «плохо спроектированной базой данных»?

Если он плохо спроектирован, перепроектируйте его, перетащите информацию из текущих таблиц и заполните новую.

Если вас беспокоит производительность, 11000 записей - это немного. База данных размером 15 мегабайт чрезвычайно мала по стандартам db.

Я не думаю, что вы предоставляете достаточно информации, чтобы кто-то мог дать ответ. Почему он плохо спроектирован? Это не нормализовано? У вас нет индексов? Что это за БД? На какой ОС он работает? Сколько времени нужно сейчас, чтобы запросить запись из рассматриваемой таблицы?

Это должен быть комментарий, а не «ответ».

user359996 08.11.2010 20:53

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

11к записей - это не так уж и много. 50К тоже не большие.

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

Однако, если дизайн достаточно плохой, вы можете подумать о стоимости редизайна.

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

Возможно, вы захотите подробнее объяснить, почему вы считаете, что это плохо спроектированная база данных, и что вы можете (легко) сделать, чтобы исправить проблемы. Наряду с этим вы должны подробно описать тип СУБД и ее использование (веб-приложение, настраиваемое приложение, отчетность и т. д.).

15МБ - это ничего. Так же 11к рядов. У меня есть базы данных с 2+ ГБ данных, а некоторые таблицы содержат более 1 миллиона строк, и я считаю, что это где-то между малым и средним размером.

Вы действительно не предоставили никаких доказательств в поддержку своего утверждения о том, что это плохо спроектированная база данных. Что делает его плохо спроектированным? в таблице 876 столбцов? Столбцы называются Col1, Col2, Col3 ...? Использует ли он float и datetime в качестве составного первичного ключа? Это плохо нормализовано? Единственное, о чем мы знаем, - это количество записей.

Извините, с базой данных очень сложно работать, то, что должно быть простым запросом, требует нескольких ВНУТРЕННИХ СОЕДИНЕНИЙ, а структура не имеет особого смысла, все мои коллеги согласны. Думаю, мне следует меньше беспокоиться о размере этой таблицы и больше о самом дизайне.

Samwise 07.10.2008 20:56

Если вы говорите о SQL Server 2005, загляните в профилировщик SQL Server и воспользуйтесь мастером настройки индекса.

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

То, из чего состоит запись, может иметь большее значение, чем количество записей в таблице.

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

С точки зрения базы данных 11К записей - это обычно ничто.

Что еще заставляет вас думать, что база данных плохо спроектирована, если не считать количества записей в одной таблице?

Вам нужно предоставить гораздо больше информации о структуре таблицы.

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

Ответ принят как подходящий

Я понимаю, что вы беспокоитесь, если увеличение количества записей примерно до 55 000 в «вашей плохо спроектированной базе данных» повлияет на производительность.

Если теперь ваша система работает так, как ожидалось, я думаю, у вас тоже будет все в порядке с 50 000 записей, если у вас уже нет небольших проблем с производительностью.

Поскольку большинство людей упомянули, что 50 тыс. Записей - это очень небольшое число по сравнению с размером таблицы базы данных, и даже с ненормализованной базой данных не должно быть проблем с производительностью.

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

Просто убедитесь, что у вас есть правильные индексы в таблице. Поля, которые чаще всего «ищут», должны быть в индексе.

Bryan Rehbein 07.10.2008 23:06

Если вы собираетесь расширить свою систему, сейчас самое время переделать ее, если в этом возникнет необходимость. Когда у вас 11 000 записей, гораздо менее болезненно менять дизайн, чем когда у вас 10 миллионов. Однако ничто из того, что вы сказали, не указывает мне на то, что вам нужно изменить дизайн. Нет ничего плохого в наличии соединений (на самом деле, хорошо спроектированная база данных должна иметь их). Опубликуйте некоторые подробности о конструкции, и мы поможем вам решить, нужен ли редизайн.

Возможно, проблема в том, что вы и ваши коллеги просто не имеете опыта доступа к базе данных и не знаете, как эффективно и легко запрашивать их. Или проблема в том, что дизайн плохой, без деталей конструкции сложно сказать.

Другие вопросы по теме