Почему вычисление плана выполнения занимает так много времени? - PullRequest
0 голосов
/ 09 декабря 2018

У меня проблема, когда перестроение или обновление статистики завершено для некоторых таблиц, после этого при первом запуске моего запроса (выберите запрос) он выполняется слишком медленно, и длительность этого запроса составляет около 30 минут, но после этогокогда я запускаю его снова, длительность составляет около 3 секунд, как ее решить?

Я установил статистику ввода-вывода по запросу и получил следующие результаты:

- Второй раз

Таблица «таблица1».Сканирование 42, логические операции чтения 963118, физические операции чтения 0, операции чтения с опережением 274, логические операции чтения 0, физические операции чтения 0, математические операции чтения 0. 0

- впервые

Таблица «таблица1».Сканирование 42, логическое чтение 977019, физическое чтение 1143, чтение с опережением 946797, логическое чтение с лота 0, физическое чтение с лота 0, чтение с опережением чтения 0.

1 Ответ

0 голосов
/ 09 декабря 2018

Почему вычисление плана выполнения занимает так много времени?

Как вы думаете, почему оно рассчитывает план выполнения?

«Первый раз» читаетс диска: read-ahead reads 946797.

Чтение с опережением при чтении может достигать 512 байт, поэтому 946 797 чтений с опережением при чтении за 30 минут - это в среднем 500 IO / с и до 260 МБ / с, либо одноможет быть столько, сколько ваша система ввода-вывода может доставить.Таким образом, эти операции чтения с опережением могут составлять 30 минут выполнения.

Во второй раз данные почти все находятся в памяти.

...