2012-04-24 6 views
0

Все вопросы в названии,Убивает ли «индекс CLUSTER ON» опасный для базы данных?

если мы убьем кластерный запрос на 100-миллионной таблице строк, будет ли это опасно для базы данных?

запрос выполняется в течение 2 часов, и мне нужно получить доступ к завтраку завтра утром (надеюсь, что на 12 часов осталось).

Я думал, что это будет намного быстрее, моя база данных работает на raid ssd и Bi-Xeon Processor.

Спасибо за ваш мудрый совет.

Sid

ответ

2

Нет, вы можете убить операцию кластера без какого-либо риска. Перед выполнением операции ничего не изменилось на исходные таблицы и индексные файлы. От manual:

При использовании индекса сканирования, временная копия таблицы создается , который содержит данные таблицы в порядке индекса. Временные копии также создаются каждым индексом таблицы. Поэтому вам нужно свободное пространство на диске, по крайней мере равное сумме размера таблицы и размерам .

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

+0

Большое спасибо за любое представление о временных окнах перед окончанием команды на столовой столовой таблицы? несколько часов ? несколько дней ? несколько ртов? :) – Sid

+0

Это зависит от размера таблицы и индексов и от скорости вашей дисковой системы. И случайный IO медленный, это будет ограничивающим фактором. При запуске Linux проверьте iostat, чтобы узнать, как быстро все происходит. –

0

Как @Frank указывает, это совершенно нормально для этого.

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

В конфигурации:

  1. отключить Fsync, для более высокой пропускной способности для файловой системы

Fsync означает файловой системы синхронизации. Когда fsync включен, база данных ожидает, что файловая система будет зафиксирована на каждой странице.

  1. увеличить ваш maintenance_work_mem

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

+0

Спасибо вам тоже. Но ты думаешь, мы говорим о часах? дней? – Sid

+0

Вы не можете отключить fsync, когда кластер уже запущен. Вы также можете столкнуться с поврежденным кластером базы данных, когда все пойдет не так. –

+0

Существует много дискуссий об использовании fsync. Да, это может повредить ваши данные, если что-то пойдет не так. Но как насчет кэша файловой системы? Что происходит при сбое файловой системы? @Sid Я не знаю, нужно ли часов, может быть, трудно сказать/угадать. – verhage

 Смежные вопросы

  • Нет связанных вопросов^_^