Гость
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Планирование индексного для БД, вопрос новичка / 25 сообщений из 31, страница 1 из 2
02.10.2014, 11:24
    #38764493
JesterOK
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Планирование индексного для БД, вопрос новичка
Добрый день. Не знаю даже как загуглить такой глупый вопрос, но в той книженции что у меня есть я ответа на него не нашел.

Я новичок, и вопрос соответсвенный: как нужно планировать индексы ??

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

Ясоздаю справочник по типу: id, figura. где поле id = UNSIGNED TINYINT. ведь 255 записей мне по идее должно хватить на все про все.

и чтобы пользователь не вводил ID, ведь он даже не представляет что это, я делаю автоинкремент.

Но автоинкремент работает так что если я удалил из 1-2-3-4-5 запись 4, то автоинкремент добавит следующую позицию 6.

Сам вопрос:
1) возможно как то реализовать средствами SQL лучше проверку на пустй автоинкремент?? или
2) проверка осуществляется средствами языка разработки, без использования типа АВТОИНКРЕМЕНТ ??
3)есть ли ссылка на мануал , ка кправильно реализовывать такие маленькие справочники, т.к. я даже не могу сформулировать сам этот вопрос.
...
Рейтинг: 0 / 0
02.10.2014, 12:35
    #38764636
egorych
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Планирование индексного для БД, вопрос новичка
JesterOKНо автоинкремент работает так что если я удалил из 1-2-3-4-5 запись 4, то автоинкремент добавит следующую позицию 6.ну и что? какая, в сущности, разница?
...
Рейтинг: 0 / 0
02.10.2014, 12:37
    #38764643
JesterOK
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Планирование индексного для БД, вопрос новичка
Разница в том что список, ограниченный форматом омжет закончится. А использовать формат который занимает больше места в памяти:
1) я так понимаю не очень хорошо
2) он тоже когда то закончится.
...
Рейтинг: 0 / 0
02.10.2014, 12:39
    #38764648
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Планирование индексного для БД, вопрос новичка
JesterOKА использовать формат который занимает больше места в памяти:
1) я так понимаю не очень хорошо
2) он тоже когда то закончится.
1) Плохо понимаешь
2) Ты умрёшь раньше.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
02.10.2014, 12:55
    #38764680
JesterOK
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Планирование индексного для БД, вопрос новичка
Нашел подобное обьяснение через два часа гугления: ссылка

По поводу размерности: нас что в ВУЗе, что я от другоих слышал: стараться уменьшать тип данных, т.к. от этого зависит размер и скорость обработки таблицы. Ну это уже дргой вопрос.
...
Рейтинг: 0 / 0
02.10.2014, 13:23
    #38764718
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Планирование индексного для БД, вопрос новичка
JesterOKчто в ВУЗе, что я от другоих слышал: стараться уменьшать тип данных, т.к.
от этого зависит размер и скорость обработки таблицы.
В вашем ВУЗе, очевидно, ещё не знают, что на дворе 21-й век и использование типов данных с
размером меньше 32-х бит только уменьшает скорость обработки.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
02.10.2014, 13:33
    #38764742
JesterOK
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Планирование индексного для БД, вопрос новичка
Dimitry Sibiryakov,

Да, вы правы, меня учили именно так, к сожалению о таком я слышу впервые, и буду иметь ввиду.

Так же был бы Вам очень благодарен если бы вы привели какую то ссылку на рекомендации чтоб я мог ознакомиться и обновить свои знания в соответсвии со стандартами 21 века
...
Рейтинг: 0 / 0
02.10.2014, 13:46
    #38764779
vmag
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Планирование индексного для БД, вопрос новичка
Dimitry Sibiryakov1) Плохо понимаешь
2) Ты умрёшь раньше.



JesterOKТак же был бы Вам очень благодарен если бы вы привели какую то ссылку на рекомендации чтоб я мог ознакомиться и обновить свои знания в соответсвии со стандартами 21 века

Делайте обычные счетчики с вашим "автоинкрементом" и не парьтесь, кажись максимальное значение под 100
миллиардов будет...
...
Рейтинг: 0 / 0
02.10.2014, 13:48
    #38764780
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Планирование индексного для БД, вопрос новичка
Погуглите на тему "архитектура 32-х разрядных процессоров и их взаимодействие с
оперативной памятью".
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
02.10.2014, 15:39
    #38765013
Leonid Kudryavtsev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Планирование индексного для БД, вопрос новичка
Dimitry Sibiryakov....и их взаимодействие с оперативной памятью".

А с диском?
...
Рейтинг: 0 / 0
02.10.2014, 15:41
    #38765016
Leonid Kudryavtsev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Планирование индексного для БД, вопрос новичка
note: хотя по факту - экономить единицы байт сейчас очень глупо. Разумеется есть задачи, где это может дать какой-то эффект. Но в 99.99% случаев - нефиг париться по пустякам.
...
Рейтинг: 0 / 0
02.10.2014, 16:25
    #38765074
Кот Матроскин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Планирование индексного для БД, вопрос новичка
Leonid KudryavtsevDimitry Sibiryakov....и их взаимодействие с оперативной памятью".

А с диском?
С диска читается все равно страница целиком - т.е. единственный кейс, когда от уменьшения размера ключа на 3 байта может быть выигрыш - когда те обьекты, которые раньше лежали на двух и более страницах, умещаются на одну.
Для простенького справочника из 256 элементов максимум - не очень вероятный случай.
...
Рейтинг: 0 / 0
02.10.2014, 16:36
    #38765091
Leonid Kudryavtsev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Планирование индексного для БД, вопрос новичка
Кейс это когда в блоке будет лежать в N-раз больше записей и соответственно обмен с диском будет в N-раз быстрее.

Но, например, Oracle вроде хранит числа в своем, внутреннем формате. Т.ч. для Oracle разницы все равно не будет ))) Для каких либо старых БД - х.з.
...
Рейтинг: 0 / 0
02.10.2014, 22:38
    #38765445
alexeyvg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Планирование индексного для БД, вопрос новичка
Кот МатроскинС диска читается все равно страница целиком - т.е. единственный кейс, когда от уменьшения размера ключа на 3 байта может быть выигрыш - когда те обьекты, которые раньше лежали на двух и более страницах, умещаются на одну.
Для простенького справочника из 256 элементов максимум - не очень вероятный случай.Экономия не на справочнике, а в таблицах, которые его используют.

Огромная таблица фактов может содержать только ссылки на справочники, и вышеописанный подход "экономии на типах" может уменьшить многотерабайтное хранилище в пару раз.
JesterOKЯ новичок, и вопрос соответсвенный: как нужно планировать индексы ??Ну, индексы в этом вопросе вообще ни при чём :-)
JesterOKЯсоздаю справочник по типу: id, figura. где поле id = UNSIGNED TINYINT. ведь 255 записей мне по идее должно хватить на все про все.

и чтобы пользователь не вводил ID, ведь он даже не представляет что это, я делаю автоинкремент.

Но автоинкремент работает так что если я удалил из 1-2-3-4-5 запись 4, то автоинкремент добавит следующую позицию 6.Пользователи обычно такими справочниками не управляют, это делают программисты, либо администраторы данных. Так что лучше отказаться от автоинкремента и управлять идентификаторами самому. Это, конечно, зависит от справочников, но для маленьких правочников получается обычно так.
JesterOKНо автоинкремент работает так что если я удалил из 1-2-3-4-5 запись 4, то автоинкремент добавит следующую позицию 6.И, наконец, главный вопрос - а как, собственно, планируется удалять значения из справочника? А ссылок на них не было? А в исторических данных, в старых отчётах?
Удаление из справочника - это вообще большая редкость, обычно так не делают при проектировании модели данных.
...
Рейтинг: 0 / 0
03.10.2014, 09:46
    #38765627
Кот Матроскин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Планирование индексного для БД, вопрос новичка
alexeyvgКот МатроскинС диска читается все равно страница целиком - т.е. единственный кейс, когда от уменьшения размера ключа на 3 байта может быть выигрыш - когда те обьекты, которые раньше лежали на двух и более страницах, умещаются на одну.
Для простенького справочника из 256 элементов максимум - не очень вероятный случай.Экономия не на справочнике, а в таблицах, которые его используют.

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

Только ссылки на справочники из 256 элементов? ;) Как-то не очень вероятно имхо.
...
Рейтинг: 0 / 0
03.10.2014, 10:22
    #38765671
vmag
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Планирование индексного для БД, вопрос новичка
Кот МатроскинТолько ссылки на справочники из 256 элементов? ;) Как-то не очень вероятно имхо.

Ну почему так ? Например справочник ответов из 4 - х элементов:
- Да
- Нет
- ХЗ
- Иди нах
...
Рейтинг: 0 / 0
03.10.2014, 11:05
    #38765741
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Планирование индексного для БД, вопрос новичка
vmagКот МатроскинТолько ссылки на справочники из 256 элементов? ;) Как-то не очень вероятно имхо.

Ну почему так ? Например справочник ответов из 4 - х элементов:
- Да
- Нет
- ХЗ
- Иди нах
Матроскин не про это.
...
Рейтинг: 0 / 0
03.10.2014, 12:29
    #38765933
JesterOK
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Планирование индексного для БД, вопрос новичка
И, наконец, главный вопрос - а как, собственно, планируется удалять значения из справочника? А ссылок на них не было? А в исторических данных, в старых отчётах?
Удаление из справочника - это вообще большая редкость, обычно так не делают при проектировании модели данных.

Планируется БД для спортивной школы, этот маленький справочник входит в аткую структуру: ВИД СПОРТА -> ТРенер -> Группа -> Учащиеся.

Дальше будет обработка результатов, но это уже дргуой ворпос. Именно на примере маленького справочника ВИД СПОРТА я это и рассматриваю. по идее - его добавят для школы один раз и все.

Вопрос на самом деле интересный, но по ссылку выше сказано - если СУБД MySQL видит переполнение автоинкремента, то она ищет среди доступных номеров в этом диапазоне. я не думаю что там будет больше 10 видов спорта. НО ведь это мой единичный случай.
...
Рейтинг: 0 / 0
03.10.2014, 12:56
    #38765983
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Планирование индексного для БД, вопрос новичка
JesterOKНО ведь это мой единичный случай.Грамотные коммерческие проекты имеют фазу анализа того, что нужно сделать сейчас (какие данные, какого размера положить в базу и как с ними работать) и что будет через год.
И на основе этого выбирается архитектура.
...
Рейтинг: 0 / 0
04.10.2014, 08:49
    #38766781
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Планирование индексного для БД, вопрос новичка
JesterOKРазница в том что список, ограниченный форматом омжет закончится. А использовать формат который занимает больше места в памяти:
1) я так понимаю не очень хорошо
2) он тоже когда то закончится.

все когда то закончится....
...
Рейтинг: 0 / 0
04.10.2014, 08:52
    #38766783
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Планирование индексного для БД, вопрос новичка
JesterOKНашел подобное обьяснение через два часа гугления: ссылка

По поводу размерности: нас что в ВУЗе, что я от другоих слышал: стараться уменьшать тип данных, т.к. от этого зависит размер и скорость обработки таблицы. Ну это уже дргой вопрос.

зависит скорость от размера очень незначительно.
ты ведь не на порядок размер увеличиваешь, не в 10-100-1000раз, а на байт или максимум в 2 раза.
...
Рейтинг: 0 / 0
04.10.2014, 18:22
    #38766994
softwarer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Планирование индексного для БД, вопрос новичка
Leonid Kudryavtsevnote: хотя по факту - экономить единицы байт сейчас очень глупо.
Экономить единицы байт довольно трудно. Я однажды на спор с одним DBA уложил в 98 байт средней длины строки некоторые данные, которые по его мнению, требовали не менее двухсот. Что это значит в промышленных масштабах... ну например, это значит, что на сервере волшебным образом стало вдвое больше оперативки и вдвое быстрее обмен с дисками...
...
Рейтинг: 0 / 0
06.10.2014, 12:12
    #38767682
alexeyvg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Планирование индексного для БД, вопрос новичка
Кот Матроскинalexeyvgпропущено...
Экономия не на справочнике, а в таблицах, которые его используют.

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

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

Допустим, была таблица фактов - пара полей-ссылок типа INT, поле datetime, поле NUMERIC(38)
То есть 4+4+8+17 = 33 байт
Сделали пару полей-ссылок типа TINYINT, SMALLINT, поле INT (ссылка на календарь, ну или тип SMALLINT, тоже 4 байта), поле real
Получилось 1+2+4+4 = 12 байт
Почти в три раза, было хранилище к примеру 100 террабайт, стало 40, экономия.
...
Рейтинг: 0 / 0
06.10.2014, 12:13
    #38767685
alexeyvg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Планирование индексного для БД, вопрос новичка
alexeyvgДопустим, была таблица фактов - пара полей-ссылок типа INT, поле datetime, поле NUMERIC(38)
То есть 4+4+8+17 = 33 байт
Сделали пару полей-ссылок типа TINYINT, SMALLINT, поле INT (ссылка на календарь, ну или тип SMALLINT, тоже 4 байта), поле real
Получилось 1+2+4+4 = 12 байт
Почти в три раза, было хранилище к примеру 100 террабайт, стало 40, экономия.Ой, получилось 11 байт, экономия в 3 раза.
...
Рейтинг: 0 / 0
06.10.2014, 12:36
    #38767720
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Планирование индексного для БД, вопрос новичка
alexeyvgПолучилось 1+2+4+4 = 12 байт
Почти в три раза, было хранилище к примеру 100 террабайт, стало 40, экономия.
На какой СУБД?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Планирование индексного для БД, вопрос новичка / 25 сообщений из 31, страница 1 из 2
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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