Я собираюсь запустить PRAGMA quick_check в очень большой базе данных SQLite и хотел бы оценить время, которое потребуется для завершения. Есть ли (приблизительный) способ сделать это при достаточно быстром жестком диске или SSD? Это O (n) или хуже?

Я явно не ищу точного прогноза, просто что-то вроде «от 1 до 5 часов на 10 ГБ».

1
mafu 10 Май 2016 в 15:43

2 ответа

Лучший ответ

Quick_check проверяет записи с нарушением порядка, отсутствующие страницы, искаженные записи, а также ошибки ограничения CHECK и NOT NULL.

Это может быть очень медленно.

1
Sohail 4 Сен 2019 в 02:42

Это не предназначено как ответ, а как ориентир, пока кто-то более знающий, чем я, не сможет помочь с более общим ответом.

База данных sqlite3 объемом 90 ГБ (1 таблица, 1 индекс, 20 млн строк) заняла 13 часов на моем SSD среднего класса с 16 ГБ ОЗУ, работающем под управлением Windows7 / NTFS. Процесс явно был привязан к диску.

Предполагая линейную зависимость, получается 5-10 минут на гигабайт .

Согласно нескольким страницам, которые я нашел в Интернете, полный PRAGMA check_integrity занимает примерно в 8 раз больше времени (1 час / ГБ).

1
mafu 10 Май 2016 в 18:01