Aisamiery

Aisamiery
Рейтинг
319
Регистрация
12.04.2015
htexture #:
А что это за программа или вебморда на скринах?

Админка битрикса

Snake800 #:
Основная проблема строковых и uuid индексов в их фрагментации (непоследовательности ) - статейка

Я прочитал по диагонали, но мне кажется там проблема в том что транзакции включают инсерты и конечно даже 5к транзакций в секунду это достаточно большая нагрузка на машинку в 8Гб и 4 ядра. Тут люди про сайты на DLE втирают что им ID числовой в урле даст какой то буст производительности =))

Владимир #:
ради интереса решил проверить сам на сайте, к которому есть доступ с ~ 425000 новостями, типичные адреса выглядят так site.com/12345-Sber-vzyal-planku-v-300-rubleiy.html, где  12345 это primary key в базе, а Sber-vzyal-planku-v-300-rubleiy это добавка для псевдо ЧПУ, сделал по этому полю текстовой ключ, и решил сравнить время выборки по идентификатору, например 12345 (в среднем 0.0005 сек), и текстовому ключу, например Sber-vzyal-planku-v-300-rubleiy (в среднем 0.0011 сек), сделал пару десятков выборок, разница, в среднем составила в два раза в пользу выборки по primary key, стоит отметить, что сервер (VDS) не нагружен, если был бы нагружен, то было бы больше

explain одного и второго запроса покажите. Во вторых вы тестируете на VDS я показывал на выделенном сервере, там может майнит крипту у вас кто

И еще важно чтобы поле было NOT NULL и желательно ключ уникальным

Владимир #:

там в выборке всё равно участвует идентификатор, оптимизатор запросов mysql будет использовать его, сравнивайте ТОЛЬКО с выборкой по текстовому ключу

Нет там идентификатора эти числовые поля сами по себе не являются ключами их нельзя использовать отдельно, только все 3 поля вместе и среди 3х полей есть строка.

Владимир #:
и к чему все эти запросы, ГДЕ сравнение с выборкой по текстовому ключу? вы нас не обманете

Четвертый скрин, там есть СТРОКА в выборке =))

Владимир #:
вы просто занимаетесь словоблудием, магии нет, строки занимают больше места, чем числа, сравнение строк накладнее по ресурсам, чем сравнение целых чисел, ваш коллега Sly32 уже признал мою правоту

Вы можете дальше жить в своем неведении и считать что ID в строке даст вам какой то значительный буст =)) 

Sly32 #:
так что по факту да - для простого запроса будет, например быстрее получить статью из базы по полю айди чем по текстовому полю(индексу)

Там если и будет разница, то фактически нивелироваться железом, вот табличка на 1.5kk записей


И в ней 3 индекса, 1 праймари и 2 составных (один чисто числовой, второй имеет строку) и собственно вот запросы

По праймари кею


По первому составному из 2х чисел

И из 2х чисел со строкой

В общем тут на уровне погрешности разница между ними и это вполне логично

Владимир #:

у вас каша в голове, несмотря на то, что вы знаете, что такое b-tree, вы не знаете что такое целые числа, они не хранятся в виде строк!

Я вам задам другой вопрос, кто вам сказал что строки в индексе хранятся в виде строк? =))

Вы можете думать что угодно, я же вам предлагаю проверить.

lutskboy #:
логично что по ID быстрее чем по varchar. на практике хз. нужно тестить

Чем логичнее? =) То что знаков больше? Так по вашему ID 10000000 будет искаться дольше чем строка address

Ключи в БД не выглядят как их значения, то что вы видите цифру 1 ключ это не цифра 1 =))

Владимир #:
лол, наверное на озоне, вайлдбериз, яндекс маркете с сотней миллионов товаров дураки работают, раз используют псевдо ЧПУ, выборку по числовому идентификатору, так?

Ну вы же наверняка в валдбериез и яндекс маркете архитектором работаете, ведь так? =)))

Я конечно не работаю там, но предполагаю, что используют это для такой штуки как шардинг. Так как базу данных сложно масштабировать горизонтально, то принимают решение, что например ID товаров с 1 до 1кк мы храним на сервере А, а с 1кк до 2кк на сервере Б, без ID в урле это действительно сложно делать. Вы если мне не верите, можете сделать табличку на 2 поля, число по праймари и varchar на пусть 100 символов с индексом желательно уникальным и запустить тест выборки по полям. Я это все к чему, я работаю на проектах подобных что вы озвучили, и мы, например, используем как ключи uuid, а не числа.

Вот вам пример такой таблицы, есть ключ праймари и ключ по url (строке), для БД это один и тот же тип индекса, поэтому я не очень понимаю что вы мне тут пытаетесь доказать, я даже не уверен что у вас есть понимание работы всего этого, сделать эксперимент же делов то полу часа, зато сформируете свое мнение основанное на опыте и практике, а не кто то где то сказал.


tarkas777 :
Где можно посмотреть как их делать

Я думаю можно начать от сюда https://www.elastic.co/guide/en/elasticsearch/reference/current/getting-started.html

Всего: 4110