powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Оптимизация бд
15 сообщений из 15, страница 1 из 1
Оптимизация бд
    #38824288
Aleksandrttt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В филиале предприятия 1000 рабочих. Один работник в среднем изготавливает 100 изделий за смену. Все параметры по каждой детали записываются в базу.
Контролер этого филиала выборочно проверяет качество детали по данным из базы.
В компании 100 филиалов, в каждом свои рабочие и свой контролер.

Для хранения параметров о детали используется своя таблица.

Как рациональней сделать выборку данных для контролера каждого филиала?
1 вариант.
Для всех филиалов создать одну общую таблицу, (тогда в день 100 филиалов, добавляет по 100 изделий от 1000 рабочих. Итого 10 000 000 строк в день, за месяц 310 000 000)
Тогда в конце месяца для контролера каждого филиала производится выборка данных из таблицы, где ему нужны только записи о деталях его филиала. Всего 1% от общего числа но запросом будут просматриваться все записи.
2 вариант.
Для каждого филиала создать свою таблицу, (тогда 100 таблиц по 100 000 записей в день, за месяц 3 100 000)
Тогда в конце месяца для контролера каждого филиала производится выборка данных из его собственной таблицы.

Следует учесть что все контролеры начинают работу с базой в одно и тоже время.
...
Рейтинг: 0 / 0
Оптимизация бд
    #38824377
Фотография ScareCrow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторВ филиале предприятия 1000 рабочих. Один работник в среднем изготавливает 100 изделий за смену.
задачу распиши подробней.

на всякий случай - есть секционирование.
...
Рейтинг: 0 / 0
Оптимизация бд
    #38824453
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Второй - это вариант не для SQL, а для файловой БД.
...
Рейтинг: 0 / 0
Оптимизация бд
    #38825046
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот этот:

Aleksandrttt1 вариант.
Для всех филиалов создать одну общую таблицу, (тогда в день 100 филиалов, добавляет по 100 изделий от 1000 рабочих. Итого 10 000 000 строк в день, за месяц 310 000 000)
Тогда в конце месяца для контролера каждого филиала производится выборка данных из таблицы, где ему нужны только записи о деталях его филиала. Всего 1% от общего числа но запросом будут просматриваться все записи.


вариант, и -- желательно -- другой сервер СУБД.
...
Рейтинг: 0 / 0
Оптимизация бд
    #38825053
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AleksandrtttВ филиале предприятия 1000 рабочих. Один работник в среднем изготавливает 100 изделий за смену. Все параметры по каждой детали записываются в базу.
Контролер этого филиала выборочно проверяет качество детали по данным из базы.
В компании 100 филиалов, в каждом свои рабочие и свой контролер.


А что это у тебя такие цифры все круглые ? не верю. Не может быть ровно 100 филиалов.


AleksandrtttДля хранения параметров о детали используется своя таблица.


И, наверное, не одна....
Как минимум master-detail должно же быть, наверное ? нет ?


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

Это пофигу.
...
Рейтинг: 0 / 0
Оптимизация бд
    #38825120
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AleksandrtttВсего 1% от общего числа но запросом будут просматриваться все записи .покажите мне этого чудо-контролёра, способного проверить 3М записей (за пару дней)
...
Рейтинг: 0 / 0
Оптимизация бд
    #38825574
alex564657498765453
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну проверил контролер
то что записываються данные по каждой детали, которые сделал рабочий за день, не означает что должно быть много записей в базе.

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

или у тебя выборки предвидяться - отобрать детали с номером больше 300 и меньше 333 ???
...
Рейтинг: 0 / 0
Оптимизация бд
    #38825583
Aleksandrttt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я Вам очень благодарен за советы.

Не знал о секционирование спасибо!

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

Тут еще рекомендовали использовать другую СУБД. Какую?
И если все же остановится на mySQL то какой тип таблицы использовать?

P.S. Цифры круглы потому что я студент и это часть задания контрольной. На лекциях разбираем в основном sql запросы, про оптимизацию ни слова. Хочется разобраться, поэтому обратился к Вам. Простите если кого то унизил разбором этого задания.
...
Рейтинг: 0 / 0
Оптимизация бд
    #38825592
Aleksandrttt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Прочитал про секционирование.
Насколько я понял это посути второй вариант. Прирост в скорости будет сомнителен так как для каждой секции будет открываться свой файл и будет увеличена нагрузка на диск, или я не прав?
И еще вопрос: увеличители скорость поиска индексирование, если выборка производится по первичному ключу?
...
Рейтинг: 0 / 0
Оптимизация бд
    #38826498
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AleksandrtttНе знал о секционирование спасибо!

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


Да.

AleksandrtttТут еще рекомендовали использовать другую СУБД. Какую?


Любую, кроме MySQL. Postgres например.

AleksandrtttИ если все же остановится на mySQL то какой тип таблицы использовать?


InnoDB


AleksandrtttP.S. Цифры круглы потому что я студент и это часть задания контрольной. На лекциях разбираем в основном sql запросы, про оптимизацию ни слова. Хочется разобраться, поэтому обратился к Вам. Простите если кого то унизил разбором этого задания.


Если это учебная задача, то её можно решать в лоб, без использования partitioning.
Ты вряд ли наберёшь реальный объём данных для тестирования и демонстрации, при сдаче всё будет ОК и так.

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



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

Прирост скорости тут как раз должен быть (для каких-то запросов, естественно, в рамках одного филиала), поскольку размер данных для одного филиала упадёт на два порядка, это хорошо.
Но проблема в том, что в реальности филиалов так много не бывает, их по кол-ву гораздо скромнее обычно, порядка 10. А это -- мало.

AleksandrtttИ еще вопрос: увеличители скорость поиска индексирование, если выборка производится по первичному ключу?


Не понял. По PK надо всегда создавать индекс. Ну и в InnoDB не создать индекс по PK не получится. Там он обязателен и он кластерный.
...
Рейтинг: 0 / 0
Оптимизация бд
    #38826787
Aleksandrttt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Накачал кучу учебников по MySQL, правда очень старых версий. Помогите разобраться.
В самой базе данных можно создавать: хранимые процедуры и триггеры, что они делают я понял. Но зачем это надо? Можно же и без них сделать все, к примеру скриптом и sql запросом!
И еще при проектирование базы данных рекомендуют исключить дублирование записей в таблицах. Что лучше сделать продублировать запись (тип varchar) или оставить его в другой, при условии, что при каждом третьем запросе к этой таблицы нужно его значение. (приоритет на выборку).
Так же подскажите про индексацию таблиц. Насколько я понял индексация это упорядочивание значений таблицы по которому проводят поиск. То есть если выборка происходит по первичному ключу то эту таблицу индексировать не нужно ПК и есть индекс или нет?
...
Рейтинг: 0 / 0
Оптимизация бд
    #38826936
JeStone
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AleksandrtttНакачал кучу учебников по MySQL, правда очень старых версий. Помогите разобраться.
В самой базе данных можно создавать: хранимые процедуры и триггеры, что они делают я понял. Но зачем это надо? Можно же и без них сделать все, к примеру скриптом и sql запросом!

Хранимые процедуры, в отличие от твоих запросов из приложения прекомпилируются и при их вызове непосредственном вызове их повторная компиляция и вычисления плана не требуется. К тому же, т.к. хранимые процедуры - это объекты БД, для них можно настраивать ограничения доступности на исполнение теми или иными пользователями независимо от того имеют ли пользователи права на объекты, используемые в данных процедурах. К примеру, вы можете настроить привилегии на базу таким образом, что прямая вставка в таблицу данных будет недоступна, а через вашу хранимую процедуру, которая выполняет пре-обработку данных - доступна.
Что касается триггеров, то их достоинства в событийности срабатывания. К примеру, часто в триггерах делают custom-механизмы для логирования действий пользователей и более сложные проверки вставляемых/изменяемых данных, чем позволяет нам сделать обычный CHECK.
AleksandrtttИ еще при проектирование базы данных рекомендуют исключить дублирование записей в таблицах. Что лучше сделать продублировать запись (тип varchar) или оставить его в другой, при условии, что при каждом третьем запросе к этой таблицы нужно его значение. (приоритет на выборку).
Я смутно понял о чем вы. Но полагаю вопрос звучит "что лучше - нормализация или денормализация"? Зависит от ситуации. Излишняя нормализация может привести к снижению производительности при выборке. Денормализация может привести к неконсистентности данных.
AleksandrtttТак же подскажите про индексацию таблиц. Насколько я понял индексация это упорядочивание значений таблицы по которому проводят поиск. То есть если выборка происходит по первичному ключу то эту таблицу индексировать не нужно ПК и есть индекс или нет?
Только кластерный индекс физически упорядочивает строки в таблице. Некластерный индекс не упорядочивает строки в таблице и вообще никак на них не влияет. По первичному ключу автоматически строится кластерный индекс поэтому при выборке по первичному ключу дополнительные индексы не требуются.
...
Рейтинг: 0 / 0
Оптимизация бд
    #38826937
JeStone
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Какая-то у меня проблема с руская языка, окончания в словах ни к черту =\
...
Рейтинг: 0 / 0
Оптимизация бд
    #38827226
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я смутно понял о чем вы. Но полагаю вопрос звучит "что лучше - нормализация или денормализация"? Зависит от ситуации. Излишняя нормализация может привести к снижению производительности при выборке. Денормализация может привести к неконсистентности данных.
[quot Aleksandrttt]

не зависит это от ситуации.
нормализация - всегда хорошо, ненормализация - всегда плохо.

нет такого понятия "излишняя нормализация".

и не надо путать ненормализованность данных с денормализацией. последнее предполагает сначала нормализацию, а потом сознательный контролируемый ввод аномалий с определенной целью.
...
Рейтинг: 0 / 0
Оптимизация бд
    #38828529
Aleksandrttt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо Вам, за обширные ответы!
Пока разбираюсь сам на примере скрипта форума PHPbb. Уловил связь: пост - деталь, тема - сотрудник, форум - филиал, организация это все в целом.






.
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Оптимизация бд
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]