0
Производительность GIN и GiST индексов
            в PostgreSQL

    Федор Сигаев (PostgreSQL Team)
Индексы в базах данных


    Индексы – главный метод ускорения
                  поиска

● B-tree – для скалярных данных
●...
Специализированные типы данных и задачи



● 3-мерные и более координаты
● Сферические координаты

● KNN (Nearest Neighbou...
Специндексы

 B-tree
   ● Одна интерфейсная функция (compare)

   ● Операции: <, <=, =, >=, >

● GiST (Generalized Search ...
Полнотекстовый поиск


contrib/tsearch2 (8.0-8.2), встроеный в 8.3

Тип tsvector – представление документа, удобное для
по...
GiST для полнотекстового поиска
                    Bitwise OR:
       Хеш                                        Корневая...
GIN для полнотекстового поиска
                            Корневая страница, ключи
                                 abc  ...
Размер индексов




                  • Размер таблицы
                  учитывает pg_toast
                   и pg_toast_...
Проиводительность GIN




• Увеличение кол-ва поцессов практически не влияет на
производительность
• Пока база помещается ...
Производительность GiST




• Увеличение кол-ва поцессов практически не влияет на
производительность
• Производительность ...
GIN и GiST на выборке




                  Производительность
                  обоих индексов обратно
                  ...
GIN и GiST при обновлении




                    Производительность
                    GIN при вставке быстро
          ...
Выводы



● GIN имеет более высокую
производительность при поиске (может
выполнить порядка 10 миллионов запросов)
● GiST б...
Upcoming SlideShare
Loading in...5
×

20070925 Highload2007 Gingist Sigaev

564

Published on

Published in: Lifestyle, Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
564
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
6
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Transcript of "20070925 Highload2007 Gingist Sigaev"

  1. 1. Производительность GIN и GiST индексов в PostgreSQL Федор Сигаев (PostgreSQL Team)
  2. 2. Индексы в базах данных Индексы – главный метод ускорения поиска ● B-tree – для скалярных данных ● R-tree – для двухмерных данных ● Bitmap – для данных с малой мощностью множества (cardinality)
  3. 3. Специализированные типы данных и задачи ● 3-мерные и более координаты ● Сферические координаты ● KNN (Nearest Neighbour Search) ● Массивы ● Поиск похожих слов ● Полнотекстовый поиск
  4. 4. Специндексы B-tree ● Одна интерфейсная функция (compare) ● Операции: <, <=, =, >=, > ● GiST (Generalized Search Tree) ● 7 интерфейсных функций (penalty, union, picksplit, consistent, same compress/decompress) ● Операции: зависит от данных ● GIN (Generalize Inverted Index) ● 4 интерфейсные функции (extractValue, extractQuery, compare, consistent) ● Операции: зависит от данных
  5. 5. Полнотекстовый поиск contrib/tsearch2 (8.0-8.2), встроеный в 8.3 Тип tsvector – представление документа, удобное для поиска, с нормализованными словами: # select to_tsvector('A fat cat sat on a mat and ate a fat rat'); to_tsvector ----------------------------------------------------- 'ate':9 'cat':3 'fat':2,11 'mat':7 'rat':12 'sat':4 Tsquery – полнотекстовый запрос # select plainto_tsquery('fat cat'); plainto_tsquery ----------------- 'fat' & 'cat'
  6. 6. GiST для полнотекстового поиска Bitwise OR: Хеш Корневая страница Слово Бит 100000000110 OR Cat 1 010101011001 = 110101011111 0111... Eat 11 110101011111 Fat 3 Mat 8 Rat 5 Внутреняя страница Sit 7 100000000110 010101011001 Sea 10 View 0 Port 9 Концевая страница cat eat rat cat eat fat mat rat sit Концевая страница sea view sea port TsVector: 'cat:3 eat:9 fat:2,11 mat: rat:12 sit:4' Text: A fat cat sat on a mat and ate a fat rat
  7. 7. GIN для полнотекстового поиска Корневая страница, ключи abc bar foo Концевая страница, ключи aaa abc Ключи Сортированные Указатель baa bar указатели на таблицу на дерево Ссылка на Корневая страница, указатели правую 14:17 218:1 1021:6 страницу Указатели Указатели 1:33 2:7 14:17 123:1 158:18
  8. 8. Размер индексов • Размер таблицы учитывает pg_toast и pg_toast_index • Указано отношение размеров индекса и таблицы
  9. 9. Проиводительность GIN • Увеличение кол-ва поцессов практически не влияет на производительность • Пока база помещается в памяти, кол-во вставок постоянно
  10. 10. Производительность GiST • Увеличение кол-ва поцессов практически не влияет на производительность • Производительность вставки мало зависит от исследуемых параметров
  11. 11. GIN и GiST на выборке Производительность обоих индексов обратно пропорциональна количеству записей.
  12. 12. GIN и GiST при обновлении Производительность GIN при вставке быстро падает из-за большого кол-ва записей в индексе
  13. 13. Выводы ● GIN имеет более высокую производительность при поиске (может выполнить порядка 10 миллионов запросов) ● GiST быстрее при вставке ● В нагруженных системах нужно использовать комбинацию индексов
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×