|
Планирование индексного для БД, вопрос новичка
|
|||
---|---|---|---|
#18+
Добрый день. Не знаю даже как загуглить такой глупый вопрос, но в той книженции что у меня есть я ответа на него не нашел. Я новичок, и вопрос соответсвенный: как нужно планировать индексы ?? Поясню, допустим у меня есть таблица справлочник, пусть будет фигуры, который используется в главной таблице. Ясоздаю справочник по типу: id, figura. где поле id = UNSIGNED TINYINT. ведь 255 записей мне по идее должно хватить на все про все. и чтобы пользователь не вводил ID, ведь он даже не представляет что это, я делаю автоинкремент. Но автоинкремент работает так что если я удалил из 1-2-3-4-5 запись 4, то автоинкремент добавит следующую позицию 6. Сам вопрос: 1) возможно как то реализовать средствами SQL лучше проверку на пустй автоинкремент?? или 2) проверка осуществляется средствами языка разработки, без использования типа АВТОИНКРЕМЕНТ ?? 3)есть ли ссылка на мануал , ка кправильно реализовывать такие маленькие справочники, т.к. я даже не могу сформулировать сам этот вопрос. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2014, 11:24 |
|
Планирование индексного для БД, вопрос новичка
|
|||
---|---|---|---|
#18+
JesterOKНо автоинкремент работает так что если я удалил из 1-2-3-4-5 запись 4, то автоинкремент добавит следующую позицию 6.ну и что? какая, в сущности, разница? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2014, 12:35 |
|
Планирование индексного для БД, вопрос новичка
|
|||
---|---|---|---|
#18+
Разница в том что список, ограниченный форматом омжет закончится. А использовать формат который занимает больше места в памяти: 1) я так понимаю не очень хорошо 2) он тоже когда то закончится. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2014, 12:37 |
|
Планирование индексного для БД, вопрос новичка
|
|||
---|---|---|---|
#18+
JesterOKА использовать формат который занимает больше места в памяти: 1) я так понимаю не очень хорошо 2) он тоже когда то закончится. 1) Плохо понимаешь 2) Ты умрёшь раньше. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2014, 12:39 |
|
Планирование индексного для БД, вопрос новичка
|
|||
---|---|---|---|
#18+
Нашел подобное обьяснение через два часа гугления: ссылка По поводу размерности: нас что в ВУЗе, что я от другоих слышал: стараться уменьшать тип данных, т.к. от этого зависит размер и скорость обработки таблицы. Ну это уже дргой вопрос. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2014, 12:55 |
|
Планирование индексного для БД, вопрос новичка
|
|||
---|---|---|---|
#18+
JesterOKчто в ВУЗе, что я от другоих слышал: стараться уменьшать тип данных, т.к. от этого зависит размер и скорость обработки таблицы. В вашем ВУЗе, очевидно, ещё не знают, что на дворе 21-й век и использование типов данных с размером меньше 32-х бит только уменьшает скорость обработки. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2014, 13:23 |
|
Планирование индексного для БД, вопрос новичка
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, Да, вы правы, меня учили именно так, к сожалению о таком я слышу впервые, и буду иметь ввиду. Так же был бы Вам очень благодарен если бы вы привели какую то ссылку на рекомендации чтоб я мог ознакомиться и обновить свои знания в соответсвии со стандартами 21 века ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2014, 13:33 |
|
Планирование индексного для БД, вопрос новичка
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov1) Плохо понимаешь 2) Ты умрёшь раньше. JesterOKТак же был бы Вам очень благодарен если бы вы привели какую то ссылку на рекомендации чтоб я мог ознакомиться и обновить свои знания в соответсвии со стандартами 21 века Делайте обычные счетчики с вашим "автоинкрементом" и не парьтесь, кажись максимальное значение под 100 миллиардов будет... ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2014, 13:46 |
|
Планирование индексного для БД, вопрос новичка
|
|||
---|---|---|---|
#18+
Погуглите на тему "архитектура 32-х разрядных процессоров и их взаимодействие с оперативной памятью". Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2014, 13:48 |
|
Планирование индексного для БД, вопрос новичка
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov....и их взаимодействие с оперативной памятью". А с диском? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2014, 15:39 |
|
Планирование индексного для БД, вопрос новичка
|
|||
---|---|---|---|
#18+
note: хотя по факту - экономить единицы байт сейчас очень глупо. Разумеется есть задачи, где это может дать какой-то эффект. Но в 99.99% случаев - нефиг париться по пустякам. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2014, 15:41 |
|
Планирование индексного для БД, вопрос новичка
|
|||
---|---|---|---|
#18+
Leonid KudryavtsevDimitry Sibiryakov....и их взаимодействие с оперативной памятью". А с диском? С диска читается все равно страница целиком - т.е. единственный кейс, когда от уменьшения размера ключа на 3 байта может быть выигрыш - когда те обьекты, которые раньше лежали на двух и более страницах, умещаются на одну. Для простенького справочника из 256 элементов максимум - не очень вероятный случай. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2014, 16:25 |
|
Планирование индексного для БД, вопрос новичка
|
|||
---|---|---|---|
#18+
Кейс это когда в блоке будет лежать в N-раз больше записей и соответственно обмен с диском будет в N-раз быстрее. Но, например, Oracle вроде хранит числа в своем, внутреннем формате. Т.ч. для Oracle разницы все равно не будет ))) Для каких либо старых БД - х.з. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2014, 16:36 |
|
Планирование индексного для БД, вопрос новичка
|
|||
---|---|---|---|
#18+
Кот МатроскинС диска читается все равно страница целиком - т.е. единственный кейс, когда от уменьшения размера ключа на 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.И, наконец, главный вопрос - а как, собственно, планируется удалять значения из справочника? А ссылок на них не было? А в исторических данных, в старых отчётах? Удаление из справочника - это вообще большая редкость, обычно так не делают при проектировании модели данных. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2014, 22:38 |
|
Планирование индексного для БД, вопрос новичка
|
|||
---|---|---|---|
#18+
alexeyvgКот МатроскинС диска читается все равно страница целиком - т.е. единственный кейс, когда от уменьшения размера ключа на 3 байта может быть выигрыш - когда те обьекты, которые раньше лежали на двух и более страницах, умещаются на одну. Для простенького справочника из 256 элементов максимум - не очень вероятный случай.Экономия не на справочнике, а в таблицах, которые его используют. Огромная таблица фактов может содержать только ссылки на справочники, и вышеописанный подход "экономии на типах" может уменьшить многотерабайтное хранилище в пару раз. Только ссылки на справочники из 256 элементов? ;) Как-то не очень вероятно имхо. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2014, 09:46 |
|
Планирование индексного для БД, вопрос новичка
|
|||
---|---|---|---|
#18+
Кот МатроскинТолько ссылки на справочники из 256 элементов? ;) Как-то не очень вероятно имхо. Ну почему так ? Например справочник ответов из 4 - х элементов: - Да - Нет - ХЗ - Иди нах ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2014, 10:22 |
|
Планирование индексного для БД, вопрос новичка
|
|||
---|---|---|---|
#18+
vmagКот МатроскинТолько ссылки на справочники из 256 элементов? ;) Как-то не очень вероятно имхо. Ну почему так ? Например справочник ответов из 4 - х элементов: - Да - Нет - ХЗ - Иди нах Матроскин не про это. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2014, 11:05 |
|
Планирование индексного для БД, вопрос новичка
|
|||
---|---|---|---|
#18+
И, наконец, главный вопрос - а как, собственно, планируется удалять значения из справочника? А ссылок на них не было? А в исторических данных, в старых отчётах? Удаление из справочника - это вообще большая редкость, обычно так не делают при проектировании модели данных. Планируется БД для спортивной школы, этот маленький справочник входит в аткую структуру: ВИД СПОРТА -> ТРенер -> Группа -> Учащиеся. Дальше будет обработка результатов, но это уже дргуой ворпос. Именно на примере маленького справочника ВИД СПОРТА я это и рассматриваю. по идее - его добавят для школы один раз и все. Вопрос на самом деле интересный, но по ссылку выше сказано - если СУБД MySQL видит переполнение автоинкремента, то она ищет среди доступных номеров в этом диапазоне. я не думаю что там будет больше 10 видов спорта. НО ведь это мой единичный случай. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2014, 12:29 |
|
Планирование индексного для БД, вопрос новичка
|
|||
---|---|---|---|
#18+
JesterOKНО ведь это мой единичный случай.Грамотные коммерческие проекты имеют фазу анализа того, что нужно сделать сейчас (какие данные, какого размера положить в базу и как с ними работать) и что будет через год. И на основе этого выбирается архитектура. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2014, 12:56 |
|
Планирование индексного для БД, вопрос новичка
|
|||
---|---|---|---|
#18+
JesterOKРазница в том что список, ограниченный форматом омжет закончится. А использовать формат который занимает больше места в памяти: 1) я так понимаю не очень хорошо 2) он тоже когда то закончится. все когда то закончится.... ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2014, 08:49 |
|
Планирование индексного для БД, вопрос новичка
|
|||
---|---|---|---|
#18+
JesterOKНашел подобное обьяснение через два часа гугления: ссылка По поводу размерности: нас что в ВУЗе, что я от другоих слышал: стараться уменьшать тип данных, т.к. от этого зависит размер и скорость обработки таблицы. Ну это уже дргой вопрос. зависит скорость от размера очень незначительно. ты ведь не на порядок размер увеличиваешь, не в 10-100-1000раз, а на байт или максимум в 2 раза. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2014, 08:52 |
|
Планирование индексного для БД, вопрос новичка
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsevnote: хотя по факту - экономить единицы байт сейчас очень глупо. Экономить единицы байт довольно трудно. Я однажды на спор с одним DBA уложил в 98 байт средней длины строки некоторые данные, которые по его мнению, требовали не менее двухсот. Что это значит в промышленных масштабах... ну например, это значит, что на сервере волшебным образом стало вдвое больше оперативки и вдвое быстрее обмен с дисками... ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2014, 18:22 |
|
Планирование индексного для БД, вопрос новичка
|
|||
---|---|---|---|
#18+
Кот Матроскинalexeyvgпропущено... Экономия не на справочнике, а в таблицах, которые его используют. Огромная таблица фактов может содержать только ссылки на справочники, и вышеописанный подход "экономии на типах" может уменьшить многотерабайтное хранилище в пару раз. Только ссылки на справочники из 256 элементов? ;) Как-то не очень вероятно имхо.Ну я обобщённо говорю, вообще про необходимость учёта размера хранения при выборе типа для некоторых случаев. Допустим, была таблица фактов - пара полей-ссылок типа INT, поле datetime, поле NUMERIC(38) То есть 4+4+8+17 = 33 байт Сделали пару полей-ссылок типа TINYINT, SMALLINT, поле INT (ссылка на календарь, ну или тип SMALLINT, тоже 4 байта), поле real Получилось 1+2+4+4 = 12 байт Почти в три раза, было хранилище к примеру 100 террабайт, стало 40, экономия. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.10.2014, 12:12 |
|
Планирование индексного для БД, вопрос новичка
|
|||
---|---|---|---|
#18+
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 раза. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.10.2014, 12:13 |
|
|
start [/forum/topic.php?fid=32&fpage=7&tid=1539998]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
42ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
59ms |
get tp. blocked users: |
2ms |
others: | 256ms |
total: | 406ms |
0 / 0 |