Постгрес слишком медленный - PullRequest
2 голосов
/ 16 июня 2010

Я провожу масштабные тесты в базе данных Postgres ...

, поэтому в основном у меня есть 2 таблицы, в которые я вставил 40 000 000 записей, скажем, table1 и 80 000 000 в table2

после этого я удалил все эти записи.

Теперь, если я выберу SELECT * FROM table1, это займет 199000 мс?

Я не могу понять, что происходит?

может кто-нибудьпомочь мне в этом?

Ответы [ 3 ]

7 голосов
/ 16 июня 2010

Если вы удалите все строки из таблицы, они будут помечены как удаленные, но на самом деле не будут немедленно удалены с диска. Чтобы удалить их, вам нужно выполнить «вакуумную» операцию - она ​​должна включиться автоматически через некоторое время после такого большого удаления. Тем не менее, это просто оставит страницы пустыми, но займет немного места на диске без "полного вакуума".

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

3 голосов
/ 16 июня 2010

Кортежи логически удаляются, а не физически. Вы должны выполнить ВАКУУМ на БД. Подробнее здесь

0 голосов
/ 17 июня 2010

Если вы удаляете все записи, используйте усечение, а не удаление.Кроме того, при первом запуске это отношение не будет кэшировано (файловый кеш или общие буферы), поэтому оно будет медленнее, чем последующие.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...