какая разница в индексации и шардинге - PullRequest
9 голосов
/ 02 мая 2011

В чем разница между индексацией и шардингом. Какова роль обоих?

Ответы [ 2 ]

11 голосов
/ 02 мая 2011

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

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

1 голос
/ 07 марта 2019

Индексирование - это процесс хранения значений столбцов в структуре данных, такой как B-Tree или Hashing. Это делает поиск или объединение запросов быстрее, чем без индекса, так как поиск значений занимает меньше времени. Sharding - это разделение одной таблицы на несколько машин. И для индексации, и для поиска необходимо выбрать соответствующий ключ.

Для больших таблиц вы должны учитывать как индексацию, так и разделение. Например, рассмотрим таблицу X, которая имеет 1 миллион строк. Если вы ищете ключ K в таблице X, обработка запроса перейдет непосредственно к строке R, которая содержит ключ, и вернет R пользователю. Если вы не пересекаете лимит хранения в большинстве случаев, вам не нужно осколковать таблицу. Если вы пересекаете лимит хранения, вы должны осколок. Нет смысла ограждать маленькую таблицу, так как это приведет к дополнительным затратам на сеть и агрегированию подзапроса.

...