|
Пустой результат Select при использовании индексов
|
|||
---|---|---|---|
#18+
Доброго дня. Просьба подсказать, куда стоит влезть и проверить: Исходная позиция: Мастер: PostgreSQL 11.12 Таблица с индексом: CREATE UNIQUE INDEX seller_shop_id_full_name_uindex ON public.seller USING btree (shop_id, full_name) Слейв 1: PostgreSQL 11.12 Слейв 2: PostgreSQL 11.13 Запрос: select * from seller where shop_id=354 and full_name = 'Москалёв Сергей Викторович'; На мастере выдает результат: id | full_name | personnel_number | shop_id ---------+----------------------------+------------------+--------- 2491002 | Москалёв Сергей Викторович | | 354 План запроса: QUERY PLAN ----------------------------------------------------------------------------------------------- Index Scan using seller_shop_id_full_name_uindex on seller (cost=0.41..2.63 rows=1 width=64) Index Cond: ((shop_id = 354) AND ((full_name)::text = 'Москалёв Сергей Викторович'::text)) На слейве 1: PostgreSQL 11.12 тот же запрос select * from seller where shop_id=354 and full_name = 'Москалёв Сергей Викторович'; id | full_name | personnel_number | shop_id ---------+----------------------------+------------------+--------- 2491002 | Москалёв Сергей Викторович | | 354 План запроса: QUERY PLAN ----------------------------------------------------------------------------------------------- Index Scan using seller_shop_id_full_name_uindex on seller (cost=0.41..2.63 rows=1 width=64) Index Cond: ((shop_id = 354) AND ((full_name)::text = 'Москалёв Сергей Викторович'::text)) А вот на слейве 2 PostgreSQL 11.13 тот же запрос select * from seller where shop_id=354 and full_name = 'Москалёв Сергей Викторович'; выдает пустой результат id | full_name | personnel_number | shop_id ----+-----------+------------------+--------- (0 строк) QUERY PLAN ----------------------------------------------------------------------------------------------- Index Scan using seller_shop_id_full_name_uindex on seller (cost=0.41..8.43 rows=1 width=64) Index Cond: ((shop_id = 354) AND ((full_name)::text = 'Москалёв Сергей Викторович'::text)) Если убрать индекс seller_shop_id_full_name_uindex, все начинает работать. С ним работает только на мастере и 1 слейве. Причем, если убрать условие и выполнить запрос на слейве 2 select * from seller where full_name = 'Москалёв Сергей Викторович'; будет результат id | full_name | personnel_number | shop_id ---------+----------------------------+------------------+--------- 2491002 | Москалёв Сергей Викторович | | 354 Есть предположение что дело либо в различии минорных версий, но это дикость была бы.. Либо есть какой то параметр на слейв 2, которые как то влияет на поиск.. Порядком голову уже сломал. Реиндекс и vacuum analyze не помог. Пересоздание фамилии в ту же строчку тоже не помогла. Только если удалить индекс составной, тогда работает, но этот индекс нужен обязательно, да и на 1 слейве с ним работает... ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2021, 14:21 |
|
Пустой результат Select при использовании индексов
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2021, 14:41 |
|
Пустой результат Select при использовании индексов
|
|||
---|---|---|---|
#18+
DarthGelos, Версии OS/libc разные скорее всего... так работать не будет. https://wiki.postgresql.org/wiki/Locale_data_changes -- Maxim Boguk лучшая поддержка PostgreSQL: dataegret.ru ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2021, 15:21 |
|
Пустой результат Select при использовании индексов
|
|||
---|---|---|---|
#18+
Похоже что да. Там версии ОС разные на мастере и 1 слейве одна, на 2 слейве другая. Проверка ( echo "1-1"; echo "11" ) | LC_COLLATE=en_US.UTF-8 sort на мастере и 1 слейве выдает: 11 1-1 А на втором слейве 1-1 11 :( Я только не понял, как это с наличием/отсутствием индекса связано. Сами индексы некорректно работают из-за версии libc? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2021, 15:28 |
|
Пустой результат Select при использовании индексов
|
|||
---|---|---|---|
#18+
DarthGelos, представьте себе отсортированное множество. Если вы, используя одну функцию сравнения, пишете данные в одно место, логичное для этой функции сортировки, а вот при чтении пользуетесь другой функцией сравнения, которая говорит что искомые данные нужно искать в другом месте - то вы не найдёте те ранее записанные данные. С точки зрения новой функции сортировки данные записаны в неверном порядке и из-за этого закономерно ломается алгоритм поиска. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2021, 15:41 |
|
Пустой результат Select при использовании индексов
|
|||
---|---|---|---|
#18+
Melkij, ясно.. лечить это болячку лучше приведением версии ОС к одному виду? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2021, 15:46 |
|
Пустой результат Select при использовании индексов
|
|||
---|---|---|---|
#18+
DarthGelos, да ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2021, 16:11 |
|
|
start [/forum/topic.php?fid=53&msg=40107436&tid=1993791]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
30ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
49ms |
get tp. blocked users: |
1ms |
others: | 15ms |
total: | 137ms |
0 / 0 |