zodchiy
@zodchiy
адепт asp.net mvc

Удалил неиспользуемый Primary Key на 65 Гб, как вернуть производительность операциям DELETE/INSERT?

Есть таблица на 1 000 000 000 записей (растет на 2-3 млн в день), у нее есть поле ID (int, autoincrement, PK).
Проблема - индекс PK весит 65ГБ и это поле никогда и нигде не используется.
Я удалил PK (на 20 ядрах и 256Гб памяти это заняло 5 часов). Размер БД вырос на 110ГБ(?), производительность SELECT осталась прежняя, а вот производительность DELETE/INSERT упала в несколько раз.
Коллеги говорят, что без PK, таблица превратилась в "кучу", а от этого производительность DELETE/INSERT упадет.
Производительность DELETE/INSERT критична, т.к. таблица заполняет через триггер другой таблицы.
На других полях есть индексы, но их не сделать уникальными, и единственное уникальное поле, этот никому ненужный ID.
Есть еще два индекса, один для select, другой для delete, оба некластерных.
Удалить поле ID или поменять тип на менее прожорливый? Как повысить быстродействие DELETE/INSERT? Как вернуть таблицу из "кучи"?
  • Вопрос задан
  • 524 просмотра
Решения вопроса 1
  • BojackHorseman
    @BojackHorseman
    ...в творческом отпуске...
    что значит ненужное поле? это суррогатный ключ, его для этого туда и добавили, это нормальная практика, когда не может быть составлен естественный PK. верните его!
    Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через TM ID
Похожие вопросы