powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Планирование индексного для БД, вопрос новичка
6 сообщений из 31, страница 2 из 2
Планирование индексного для БД, вопрос новичка
    #38767776
Кот Матроскин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexeyvgКот Матроскинпропущено...

Только ссылки на справочники из 256 элементов? ;) Как-то не очень вероятно имхо.Ну я обобщённо говорю, вообще про необходимость учёта размера хранения при выборе типа для некоторых случаев.

Допустим, была таблица фактов - пара полей-ссылок типа INT, поле datetime, поле NUMERIC(38)
То есть 4+4+8+17 = 33 байт
Сделали пару полей-ссылок типа TINYINT, SMALLINT, поле INT (ссылка на календарь, ну или тип SMALLINT, тоже 4 байта), поле real
Получилось 1+2+4+4 = 12 байт
Почти в три раза, было хранилище к примеру 100 террабайт, стало 40, экономия.

Ну вот я слабо верю в 40-терабайтную таблицу такой структуры. Просто чтобы первичный ключ не дублировался, в ней должны быть данные за 187 тыс. дат, т .е. минимум за 500 лет ;)
В том-то и дело, если таблица фактов большая - то там разрезов штук 6, причем не на фиксированные справочники, а на бизнес-сущности и даты (т.е. не очень-то обойдешься tinyInt-ами), а ссылки на маленькие справочники больше характерны для всяких монструозных сущностей типа "Товар" или "Контрагент", где экономия 3х байт - как слону дробина.
...
Рейтинг: 0 / 0
Планирование индексного для БД, вопрос новичка
    #38767919
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я новичок, и вопрос соответсвенный: как нужно планировать индексы ??


По запросам. Какие критерии поиска в запросах, такие и индексы надо делать.
На PK естественно надо индексы иметь всегда.



Сам вопрос:
1) возможно как то реализовать средствами SQL лучше проверку на пустй автоинкремент?? или


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



2) проверка осуществляется средствами языка разработки, без использования типа АВТОИНКРЕМЕНТ ??

Это не понял. Проверка чего, и какими такими средствами.


3)есть ли ссылка на мануал , ка кправильно реализовывать такие маленькие справочники, т.к. я даже не могу сформулировать сам этот вопрос.


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

select coalesce(max(id),0)+1 from THETABLE ;

но этот запрос по хорошему нужно пускать только на уровне SERIALIZABLE, т.е. с заблокированной за данной сессией всей этой таблицей эксклюзивно. Или пускать на обычном уровне изоляции, но быть готовым к коллизиям (если записи добавляют очень редко, а видимо это так для подобного справочника, то это не страшно, поскольку коллизии будут ещё более редки, чем случай добавления).
...
Рейтинг: 0 / 0
Планирование индексного для БД, вопрос новичка
    #38768698
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovalexeyvgПолучилось 1+2+4+4 = 12 байт
Почти в три раза, было хранилище к примеру 100 террабайт, стало 40, экономия.
На какой СУБД?MSSQL
...
Рейтинг: 0 / 0
Планирование индексного для БД, вопрос новичка
    #38768708
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кот МатроскинНу вот я слабо верю в 40-терабайтную таблицу такой структуры. Просто чтобы первичный ключ не дублировался, в ней должны быть данные за 187 тыс. дат, т .е. минимум за 500 лет ;)
В том-то и дело, если таблица фактов большая - то там разрезов штук 6, причем не на фиксированные справочники, а на бизнес-сущности и даты (т.е. не очень-то обойдешься tinyInt-ами), а ссылки на маленькие справочники больше характерны для всяких монструозных сущностей типа "Товар" или "Контрагент", где экономия 3х байт - как слону дробина.В целом согласен, но я всё таки о принципе говорю, это же иллюстриция.

Поле datetime содержит данные с интервалом не сутки, а меньше (измерение раз в минуту, раз в 15 минут), ну и измерений может быть много, но каждое ссылается на справочник с небольшим количеством значений. И размер может быть не 40 тб, а один, или пять - тоже достаточно для того, что бы попробовать уменьшить...
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Планирование индексного для БД, вопрос новичка
    #39707333
Пельмени
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovJesterOKчто в ВУЗе, что я от другоих слышал: стараться уменьшать тип данных, т.к. от этого зависит размер и скорость обработки таблицы.
В вашем ВУЗе, очевидно, ещё не знают, что на дворе 21-й век и использование типов данных с
размером меньше 32-х бит только уменьшает скорость обработки.
Dimitry SibiryakovПогуглите на тему "архитектура 32-х разрядных процессоров и их взаимодействие с оперативной памятью".
Подтверждаю - все источники учат "уменьшать" тип данных и кол-во знаков по возможности.
Я также вижу из каких именно старых источников передрали информацию "современные" авторы (преподы вузов), даже примеры и рисунки не меняли.

Мануалы:
Гарсия-Молина, Уллман - 2003 г.
Дейт - 2005 г.
Коннолли, Бегг - 2003 г.

Новее только по SQL и конкретным СУБД, а по проектированию в целом.

Спасибо за этот комментарий про разрядность.
...
Рейтинг: 0 / 0
Планирование индексного для БД, вопрос новичка
    #39707334
Пельмени
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПельмениНовее только по SQL и конкретным СУБД, а по проектированию в целом источники старые, возможно устаревшие .
Исправил.
...
Рейтинг: 0 / 0
6 сообщений из 31, страница 2 из 2
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Планирование индексного для БД, вопрос новичка
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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