Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Поясните про скорость соединений
|
|||
|---|---|---|---|
|
#18+
Есть 4 таблицы с GUIDами, в каждой по миллионов записей. Данные в таблицах копипаста. Я тут погонял тесты типа Код: sql 1. 2. 3. И с изумлением обнаружил, что джойн GUID-GUID с фильтром по GUID в среднем в 2.4 раза быстрее чем VARCHAR -VARCHAR с фильтром по VARCHAR . При этом, мне казалось, зарубежная пресса ™ пишет, что джойн по VARCHAR не сильно проигрывает GUID. По мне 2.4 раза это весьма существенно. Вообще это нормальное поведение, или я что-то не учел в экспериментах? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2018, 16:42 |
|
||
|
Поясните про скорость соединений
|
|||
|---|---|---|---|
|
#18+
*4 таблицы Код: sql 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2018, 16:43 |
|
||
|
Поясните про скорость соединений
|
|||
|---|---|---|---|
|
#18+
я бы ставил на разницу в длинне, но может есть и более весомые аргументы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2018, 16:49 |
|
||
|
Поясните про скорость соединений
|
|||
|---|---|---|---|
|
#18+
Ну ты что? Varchar - самый медленный join. В GUID 16 байт строго, а строка у тебя в 2 раза больше і к тому же переменной длінны. Даже не зная фізіку процесса, можно обоснованно предположіть, что... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2018, 16:49 |
|
||
|
Поясните про скорость соединений
|
|||
|---|---|---|---|
|
#18+
ДЫк я понимаю что в два раза больше. Просто на всяких "технетах" и "скульблогах" (уже не найду) писали, что разница незначительна. Хотя если они там на два порядка меньше джойнили, то и правда незначительна... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2018, 16:53 |
|
||
|
Поясните про скорость соединений
|
|||
|---|---|---|---|
|
#18+
Cammomile, авторв среднем в 2.4 раза быстрее Код: sql 1. 2.375000 :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2018, 16:57 |
|
||
|
Поясните про скорость соединений
|
|||
|---|---|---|---|
|
#18+
Шыфл, автор к тому же переменной длінны. Как показал тест, CHAR(36) выигрывает по скорости какие-то крохи, так, что "варчарность" роляет слабо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2018, 17:00 |
|
||
|
Поясните про скорость соединений
|
|||
|---|---|---|---|
|
#18+
TaPaKCammomile, авторв среднем в 2.4 раза быстрее Код: sql 1. 2.375000 :) Стесняюсь спросить но спршу, +2 это что? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2018, 17:04 |
|
||
|
Поясните про скорость соединений
|
|||
|---|---|---|---|
|
#18+
А, из доков. Вопрос снят. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2018, 17:07 |
|
||
|
Поясните про скорость соединений
|
|||
|---|---|---|---|
|
#18+
Cammomile, The storage size is the actual length of the data entered + 2 bytes. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2018, 17:07 |
|
||
|
Поясните про скорость соединений
|
|||
|---|---|---|---|
|
#18+
CammomileШыфл, автор к тому же переменной длінны. Как показал тест, CHAR(36) выигрывает по скорости какие-то крохи, так, что "варчарность" роляет слабо.Вы решили, что GUID внутри хранится в символах? Насколько я помню, это 128 бит. То есть, 16 байт. А вот CHAR(36) это таки 36 байт. #Хэш= ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2018, 17:30 |
|
||
|
Поясните про скорость соединений
|
|||
|---|---|---|---|
|
#18+
Я не решил. Это коллега Шифл сделал предположение, что вариативность варчара сказывается на скорости. На самом деле нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2018, 17:38 |
|
||
|
Поясните про скорость соединений
|
|||
|---|---|---|---|
|
#18+
Cammomile, Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2018, 18:07 |
|
||
|
Поясните про скорость соединений
|
|||
|---|---|---|---|
|
#18+
CammomileЯ не решил. Это коллега Шифл сделал предположение, что вариативность варчара сказывается на скорости. На самом деле нет.Сказывается, да. Зависит от нюансов. Например, у варчара из-за вариативности свои особенности хранения на страницах, которые могут приводить к дополнительным издержкам. Зато за счёт компактности данные могут занимать меньше места и требовать меньше операций ввода-вывода. А в данном конкретном примере скорее всего тупо из-за размеров данных процессору пришлось читать больше страниц. Как физически, так и логически. Отсюда и разница в скорости. Отсюда простой вывод: если размер ВСЕХ записей одинаков исходя из постановки задачи (например, номер паспорта, почтовый индекс), то вариативность будет лишней. Если данные на самом деле имеют существенный разброс в размерах (например, фамилия), то вариативность будет в плюс. #Хэш= ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2018, 18:14 |
|
||
|
Поясните про скорость соединений
|
|||
|---|---|---|---|
|
#18+
04cf9f9576a6f15А в данном конкретном примере скорее всего тупо из-за размеров данных процессору пришлось читать больше страниц. Как физически, так и логически. Отсюда и разница в скорости.invm же всё разжевал. Сравнение varchar - это сложный алгоритм, в котором веса символа зависят даже от расположения соседних символов. Делаете BIN - коллейшен, и скорость получается примерно как у GUID ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2018, 19:49 |
|
||
|
Поясните про скорость соединений
|
|||
|---|---|---|---|
|
#18+
alexeyvg04cf9f9576a6f15А в данном конкретном примере скорее всего тупо из-за размеров данных процессору пришлось читать больше страниц. Как физически, так и логически. Отсюда и разница в скорости.invm же всё разжевал. Сравнение varchar - это сложный алгоритм, в котором веса символа зависят даже от расположения соседних символов. Делаете BIN - коллейшен, и скорость получается примерно как у GUIDКоллейшн - это другой фактор. А тут я говорил о разнице между CHAR и VARCHAR. И то и другое - символы. Просто для хранения первого выделяется фиксированное количество байт независимо от реальной длины строки. А для хранения второго столько, сколько строка занимает на самом деле (плюс пара-тройка служебных байт). #Хэш= ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2018, 20:42 |
|
||
|
Поясните про скорость соединений
|
|||
|---|---|---|---|
|
#18+
04cf9f9576a6f15alexeyvginvm же всё разжевал. Сравнение varchar - это сложный алгоритм, в котором веса символа зависят даже от расположения соседних символов. Делаете BIN - коллейшен, и скорость получается примерно как у GUIDКоллейшн - это другой фактор. А тут я говорил о разнице между CHAR и VARCHAR. И то и другое - символы. Просто для хранения первого выделяется фиксированное количество байт независимо от реальной длины строки. А для хранения второго столько, сколько строка занимает на самом деле (плюс пара-тройка служебных байт). #Хэш=Вашу мысль про вариативность и зависимость от этого скорости я понял, это я ответил на фразу: "А в данном конкретном примере скорее всего тупо из-за размеров данных процессору пришлось читать больше страниц. Как физически, так и логически. Отсюда и разница в скорости." Которую, кстати, процитировал в ответе, как обычно я делаю. Надо читать, на что вы отвечаете :-) 04cf9f9576a6f15Например, у варчара из-за вариативности свои особенности хранения на страницах, которые могут приводить к дополнительным издержкам. Зато за счёт компактности данные могут занимать меньше места и требовать меньше операций ввода-вывода.Ой, а что мы гадаем? давайцте модифицируем скрипт выше, добавив char, что бы сравнить с varchar И ещё размеры строк сделаем как в GUID, что бы не было разницы в размере полей Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. GUID 219 ms varchar 1968 ms char 2563 ms varchar bin 937 ms Можно ещё добавить CHAR BIN... PS char стабильно медленнее varchar, запускал несколько раз ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2018, 00:04 |
|
||
|
Поясните про скорость соединений
|
|||
|---|---|---|---|
|
#18+
У меня без указания бинарного коллейшена чар был стабильно быстрее варчара, но на крохи. Типа варчар 3600 чар 3450. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2018, 11:23 |
|
||
|
Поясните про скорость соединений
|
|||
|---|---|---|---|
|
#18+
alexeyvgPS char стабильно медленнее varchar, запускал несколько разЗанятно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2018, 11:37 |
|
||
|
Поясните про скорость соединений
|
|||
|---|---|---|---|
|
#18+
04cf9f9576a6f15alexeyvgPS char стабильно медленнее varchar, запускал несколько разЗанятно. мож у Алексея что не то с серваком? )) у меня - примерно одинаковые 1 и 4 и примерно одинаковые 2 и 3 , т.е. бинари примерно равно guid и guid быстрее binary на проценты. char примерно равен varchar. char на доли процента быстрее varchar. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2018, 11:53 |
|
||
|
Поясните про скорость соединений
|
|||
|---|---|---|---|
|
#18+
Померял с колейшеном. Варчары с колейшеном джойнятся на четверть медленней чем нормальные GUIDы. Это, конечно, лучше чем в 2.4 раза, НО все же не сказать чтобы "незначительно". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2018, 12:14 |
|
||
|
Поясните про скорость соединений
|
|||
|---|---|---|---|
|
#18+
CammomileПомерял с колейшеном. Варчары с колейшеном джойнятся на четверть медленней чем нормальные GUIDы. Это, конечно, лучше чем в 2.4 раза, НО все же не сказать чтобы "незначительно". таки смотреть характеристики серверов? ибо у меня разница максимум 10% в среднем 2-4% , правда я делаю не в tempdb. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2018, 12:22 |
|
||
|
Поясните про скорость соединений
|
|||
|---|---|---|---|
|
#18+
А вот какой смысл колейшн для гуида указывать кирилицу а не латынь? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2018, 14:02 |
|
||
|
Поясните про скорость соединений
|
|||
|---|---|---|---|
|
#18+
CammomileА вот какой смысл колейшн для гуида указывать кирилицу а не латынь? там нет тайного смысла, он написал первый попавшийся binary ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2018, 14:08 |
|
||
|
Поясните про скорость соединений
|
|||
|---|---|---|---|
|
#18+
CammomileА вот какой смысл колейшн для гуида указывать кирилицу а не латынь?Его вообще нет смысла хранить в виде символьной строки. Код: sql 1. 2. 3. 4. 1636 #Хэш= ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2018, 15:49 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=39585263&tid=1690489]: |
0ms |
get settings: |
7ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
42ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
39ms |
get tp. blocked users: |
1ms |
| others: | 216ms |
| total: | 329ms |

| 0 / 0 |
