Major Indices Explained

Best Binary Options Brokers 2020:
  • Binarium
    Binarium

    The Best Binary Options Broker 2020!
    Perfect For Beginners!
    Free Demo Account!
    Free Trading Education!

  • Binomo
    Binomo

    Good choice for experienced traders!

Please verify you are a human

Access to this page has been denied because we believe you are using automation tools to browse the website.

This may happen as a result of the following:

  • Javascript is disabled or blocked by an extension (ad blockers for example)
  • Your browser does not support cookies

Please make sure that Javascript and cookies are enabled on your browser and that you are not blocking them from loading.

Reference ID: #cb3a6670-78b4-11ea-a099-d110df7cc37a

Объясняя необъяснимое. Часть 2

Регистрация на конференцию PG Day’16 в разгаре, а мы продолжаем публиковать перевод статей Hubert Lubaczewski об explain и его основных компонентах.

В прошлый раз я писал о том, что показывает вывод explain. Теперь я хочу больше поговорить о разных типах «узлов» / операций, которые вы можете встретить в планах explain.

Самая базовая операция – это последовательное сканирование (Seq Scan).

Она выглядит вот так:

Это самая простая операция из всех возможных – PostgreSQL открывает файл с таблицей, читает строки одну за другой и возвращает их пользователю или расположенному выше узлу дерева explain, например, LIMIT, как здесь:

Важно понимать, что порядок возврата строк не является каким-то определенным. Они возвращаются не «в порядке вставки» или «последняя обновленная строка – первой», или ещё что-то в том же духе. Параллельные выборки, обновления, удаления, чистки (vacuums) могут менять порядок следования строк в любое время.

Best Binary Options Brokers 2020:
  • Binarium
    Binarium

    The Best Binary Options Broker 2020!
    Perfect For Beginners!
    Free Demo Account!
    Free Trading Education!

  • Binomo
    Binomo

    Good choice for experienced traders!

Seq Scan может фильтровать строки – то есть отбрасывать некоторые при возврате. Это происходит, например, когда вы добавляете условие “WHERE”:

Как вы видите, теперь у нас появилась информация “Filter:”. И, поскольку у меня версия СУБД 9.2 или новее, я также получил комментарий «Строки удалены фильтром» (“Rows removed by filter”).

Следующий тип узла — “Index Scan”.

Этот вид сканирования кажется очень простым, и большинство людей понимает хотя бы один случай его использования:

Всё просто – у нас есть индекс, соответствующий условию, так что PostgreSQL:

  • открывает индекс;
  • в индексе, если находит, где (в данных таблицы) могут быть строки, соответствующие данному условию:
    • открывает таблицу;
    • получает строку(-и), указанную(-ые) индексом;
  • если строки могут быть возвращены – то есть, если они видимы в текущей сессии – они возвращаются.

Конечно, вы можете спросить: как строка может быть невидимой? Это может случиться с удаленными строками, которые всё ещё находятся в таблице (не были вычищены vacuum). Или со строками, которые были обновлены. Или были вставлены, но после текущей транзакции.

Index Scan также используется, когда вы хотите отсортировать какие-то данные, используя порядок сортировки в индексе, например:

Здесь нет условия, но мы легко можем его добавить вот таким образом:

В этих случаях PG находит начальную точку отсчета в индексе (либо первую строку, которая старше 1247, либо просто самую маленькую величину в индексе), а потом просто возвращает следующие строки/значения, пока условие Limit не будет удовлетворено.

Есть версия Index Scan под названием “Index Scan Backward”, которая делает то же самое, но используется для сканирования в порядке по убыванию:

Это тот же тип операции: открыть индекс и, для каждой строки, на которую ссылается индекс, извлечь данные из таблицы. Просто это происходит не «от меньшего к большему», а «от большего к меньшему».

Ещё одна схожая операция — “Index Only Scan”.

Давайте создадим простую таблицу:

Это даёт нам таблицу вроде этой:

Здесь у меня есть индекс по id:

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

Обратите внимание на слово “Only” в “Index Only Scan”.

Это значит, что Постгрес понял, что я выбираю только данные (колонки) из индекса. И, возможно, ему не нужно ничего проверять в файлах таблицы. Так что он будет возвращать данные прямо из индекса.

Эти сканирования стали большим изменением в PostgreSQL 9.2, так как они могут работать намного быстрее обычного сканирования индекса, потому что им не нужно ничего проверять в данных таблицы.

Сложность в том, что для корректной работы, Index должен содержать информацию о том, что данные строки находятся на страницах, не подвергавшихся изменениям «в последнее время». То есть, для использования Index Only Scans ваша таблица должна быть хорошо вычищена с помощью vacuum. Но, с запущенным autovacuum это не должно стать проблемой.

Последний тип сканирования таблицы – так называемый Bitmap Index Scan. Он выглядит вот так:

(если вы читаете внимательно, то заметили, что он использует индекс, о создании которого я ранее не говорил. Это легко сделать: create index i1 on test (i);).

Bitmap Scans всегда состоят, минимум, из двух узлов. Сначала (на нижнем уровне) идет Bitmap Index Scan, а затем – Bitmap Heap Scan.

Как это работает?

Допустим, в вашей таблице 100000 страниц (это около 780MB). Bitmap Index Scan создаст битовую карту, где каждой странице вашей таблицы будет соответствовать один бит. Так что, в этом случае мы получим блок памяти на 100,000 бит

12.5 кБ. Все эти биты будут установлены в 0. Затем, Bitmap Index Scan установит некоторые биты в 1, в зависимости от того, на какой странице таблицы может находиться строка, которую нужно вернуть.

Эта часть вообще не затрагивает данные в таблице. После того как это будет сделано – то есть когда все страницы, на которых находятся строки, которые нужно вернуть, будут «помечены» – эта битовая карта перейдет на уровень выше, к узлу Bitmap Heap Scan, который читает их в более последовательной манере.

В чем смысл такой операции? Обычные Index Scans вызывают случайные операции ввода/вывода – страницы с диска загружаются в случайном порядке. А это медленно. По крайней мере, на вращающихся дисках.

Последовательное сканирование быстрее, когда нужно получить одну страницу, но, с другой стороны, вам не всегда нужны все страницы.

Bitmap Index Scans объединяет оба случая: когда вам нужно много строк из таблицы, но не все, и когда строки, которые вы будете возвращать, находятся не в одном блоке (что было бы оправдано, если бы я производил операцию “… where id Теги:

  • SQL
  • PostgreSQL
  • explain
  • СУБД

Добавить метки Хабы:

  • Разработка веб-сайтов
  • PostgreSQL
  • SQL

Indexes or Indices – What’s the Difference?

Home » Indexes or Indices – What’s the Difference?

When words have more than one variant, choosing between them can be difficult. Often, there is no hard and fast rule, so writers must rely on context to determine the best word to use.

Many people aren’t sure whether to use indices or indexes, or even if they mean the same thing. This article will shed some light on these confusing terms.

What is the Plural of Index?

In this post, I will show you the difference between indices and indexes. I will use each of the two words in example sentences that will display them in context. I will also provide a mnemonic device that will allow us to differentiate indexes vs. indices.

When to Use Indexes

What does indexes mean? Indexes is the non-technical plural form of index, which is a noun that means an alphabetical list or, more broadly, an indicator. Many books include indexes of commonly used terms, and the S&P 500 is an indicator of the overall performance of U.S. stocks.

Here are a few more examples,

  • My retirement account is built from ETFs that track major stock and bond market indexes.
  • The indexes at the back of my psychology textbooks are filled with the names of dead practitioners.
  • The number of market indexes now exceeds the number of U.S. stocks. Traditional ones such as the S&P 500 are collections of securities weighted by market value, and index funds mimic them as a low-cost way to deliver the market’s performance. –Bloomberg BusinessWeek

For those writers adhering to AP Style, you should use this spelling and this spelling alone, as AP prefers indexes over indices.

As a verb, indexes is the singular third person present conjugation of the verb index, which means to record names in a list or to serve as an indicator.

Here are a few more ways to conjugate this verb,

  • I/we index: first person singular and plural present
  • You index: second person singular and plural present
  • He/she/it indexes: third person singular present
  • They index: third person plural present
  • Indexing: present participle
  • Indexed: simple past

When to Use Indices

What does indices mean? Indices is a more technical version of the same plural noun. This version more closely approximates the original Latin form. It is common in many mathematical and technical contexts.

  • David Blitzer, managing director and chairman of the index committee at S&P Dow Jones Indices, said the low stock of existing homes for sale — currently about 3.8 months worth of supply at current sales rates — is bolstering the price increases across the board. –CNBC

It is a fully accepted variant, and, indeed, it enjoys an advantage in overall usage in published English.

Indices vs. Indexes:

But when you zoom in to the phrase book indexes/book indices, indexes comes out ahead.

Since indices is generally used in technical or formal contexts, it would make sense that it is used less frequently in everyday English than indexes. The above charts tell a somewhat mixed story.

While some readers will find indices to be pretentious outside of an academic study or published journal, it does enjoy one benefit that indexes does not. It eliminates any confusion between it and the verb indexes. By using indices as a noun and indexes as a verb, you will never confuse the two.

Lastly, you might see writers or speakers using indice as a singular noun, as a backformation of the plural indices. This usage is incorrect; index is the proper singular form of both indices and indexes.

Indices only functions as a noun. It cannot be used as a verb.

Trick to Remember the Difference

Both of these forms are accepted plural forms for this word. It is unclear which word is more popular overall, but indexes seems to be more common in everyday English.

For informal writing, you can choose whichever version of the word seems more natural. In some mathematical contexts, indices is the preferred form.

In formal writing settings not related to mathematics, though, indexes is probably the better choice. Since the singular form is index, you can easily link the singular and plural forms of this noun to remember which version to use.

Summary

Is it indexes or indices? Indexes and indices are two versions of a plural noun that means an indicator or a list of names. Indexes is also a present tense verb, but indices cannot be used that way.

  • Indexes is probably the better choice for formal writing not related to mathematics.
  • Indices is especially common in technical and formal writing.
  • AP Style requires the spelling indexes.

Let style and flow be your guide with these two words.

Best Binary Options Brokers 2020:
  • Binarium
    Binarium

    The Best Binary Options Broker 2020!
    Perfect For Beginners!
    Free Demo Account!
    Free Trading Education!

  • Binomo
    Binomo

    Good choice for experienced traders!

Like this post? Please share to your friends:
How To Make Money on Binary Options Trading
Leave a Reply

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: