2013-04-03 2 views
2

У меня есть 30 или даже больше, чем у этих таблиц, и все таблицы имеют свой первичный ключ для автоматического увеличения, поэтому всякий раз, когда я выполняю операцию удаления, например, удаление 30 записей из 10 таблиц, то после удаления 300 ячеек памяти всегда будут остаются пустыми, потому что первичные ключи настроены на автоинкремент. Так думайте об этой же ситуации для очень больших баз данных, поэтому как решить эту проблему и снова использовать эти ячейки памяти.потеря памяти базы данных после удаления

+2

AFAIK auto-increment - всего лишь счетчик. Это не имеет ничего общего с памятью. Тот факт, что столбец PK не является полной математической серией, никак не влияет на производительность. Единственное, на что влияет удаление, - это журнал отката. Если вы удаляете все данные в таблице, лучше усечь их. –

+0

Я не удаляю все данные, и если pk является просто счетчиком, чем то, как происходит управление памятью? – rupinder18

+0

Модель памяти mysql - сложная вещь. Коллекция строк в отношении PK ограничена, то есть отсутствующие значения не занимают никакой памяти. Читайте здесь для получения дополнительной информации о управлении памятью mysql: http://dev.mysql.com/doc/refman/5.0/en/memory-use.html –

ответ

1

Ну его авто увеличивается, поэтому вы не можете помочь ему. В этом нет потерь памяти.

1

Первичный ключ не относится ни к какому виду «ячеек памяти», это просто счетчик, который дает каждой строке уникальный номер.

Теоретически можно использовать все возможные ключи, однако я не уверен, что если MySQL попытается использовать старые значения, которые были удалены (это не должно быть). Но с учетом неподписанного поля BIGINT может достигать 18 446 744 073 709 551 615 (18 квинтиллионов), маловероятно, чтобы вы столкнулись с проблемой.

+0

okk принят, если мы возьмем bigint, я никогда не выйду из космоса, но что, если я хочу снова использовать тот же pk, что мне делать? – rupinder18

+2

@ rupinder18 В идеале вы никогда не должны использовать тот же первичный ключ снова. Первичный ключ обычно упоминается в других таблицах. Если вы снова будете использовать его, вы рискуете связать его с данными, которых не должно быть. Первичный ключ с автоматическим приращением не должен быть ценным, о котором вы заботитесь. Если вы хотите изменить его/вручную назначить, я бы не рекомендовал автоинкремент. – Dracs

0

Автоинкремент - это просто счетчик. Это не имеет ничего общего с памятью. Тот факт, что столбец PK не является полной математической серией, никак не влияет на производительность. Единственное, на что влияет удаление, - это журнал отката. Если вы удаляете все данные в таблице, лучше усечь их.

Модель памяти mysql сложна. В обзоре вы можете посмотреть this article из документации по разработке mysql.

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