Ни один метод разметки не является полезным; Я рекомендую удалить секционирование. При этом вы, вероятно, должны удалить ref_id
с PRIMARY KEY
.
Если у вас есть основания полагать, что разделение помогает в некотором роде, я хотел бы продолжить дискуссию.
Пахнет id
UUID или GUID. Если производительность является основным вопросом, я рекомендую вам сжать таблицу с помощью BINARY (16); см. my uuid blog для кода для преобразования. (Меньше -> быстрее)
Редактировать (Аргумент против Перегородки в данном случае)
Распространенным заблуждением является то, что разрыв таблицы на более мелкие куски улучшит производительность. Давайте проанализируем, например, «точечный запрос», такой как SELECT
, где вы указываете одну строку через PRIMARY KEY
.
В таблице без разбивки будет развернута строка, чтобы найти строку. Если таблица имеет несколько миллиардов строк, то уровень BTree будет примерно на 5 уровней. Таким образом, для поиска фактической строки потребуется найти около 5 блоков индекса.
В эквивалентной разделенной таблице каждый раздел похож на меньшую таблицу. Точечный запрос должен будет (1) найти нужный раздел, затем (2) развернуть, возможно, 4 уровня в BTree в этом разделе. Это 1 + 4 операции - вероятно, примерно такая же скорость, что и 5 в таблице без разделов.
Заключение: Точечный запрос не использует раздел.
Есть другие типы запросов, которые может извлечь выгоду из раздела. Например, если все запросы были нацелены на раздел, этот раздел может быть лучше кэширован. Но это «не может» произойти здесь. Таблица разделена на UUID (я предполагаю), такой как очень случайный, так что вы не можете смотреть только на один раздел.
Если вы захотите поделиться общими запросами, я мог бы дополнительно уточнить, какие из них (или нет) извлекают из этой (или другой) формы раздела.
Привет, Рик. В основном все мои запросы основаны на id, ref_id, поэтому ref_id в первичном ключе очень нужен для поиска. Кроме того, этот Table Host занимает около 1,8 миллиарда записей. Вот почему я думаю, что раздел поможет разбить таблицу небольшими кусками. Ваши комментарии по этому поводу. – user3752021