Разница в кешировании между SQL Express и полновесным
ru_sysadmins — 24.01.2017 Снимите меня с ручника.Берем абстрактную машину, любую, виртуальную, физическую, без разницы.
Устанавливаем туда любой Windows (сервер, десктор) тоже без разницы.
Взгромождаем туда SQL Express 2014. Создаем там базу, с одной таблицей, в которой два столбца, первый индекс, второй бинарные данные, взятые из /dev/random
по 1Мб на запись размером всего около гигабайта.
Пишем простое приложение, можно даже bat-ник, которое делать примитивное select * from MY_TABLE и результат отправляет в null
Ребутаем сервер, запускаем наше приложение.
Делаем запрос. SQL Express читает таблицу с диска и плавно помещает ее в память (кэш?), по крайней мере памяти он гигабайт свой занимает. Делаем этот же запрос через час, таблица возвращается из памяти полностью, к диску обращений почти нету, ну мегабайт 5-6 читает он с диска, и 1-2 Мб записывает. Делаем этот же запрос через день, все тоже самое.
Теперь повторим это же эксперимент с полноценным SQL Server 2014, все тоже самое. Заполнили мусором базу, делаем запрос, база читается с диска, заливается в память. Делаем через 5 минут запрос тот же, с диска ничего не читается, все отдается из памяти. Но какого хрена, если сделать этот же запрос по тем же данным через где-то час, он ЗАНОВО перечитывает всю таблицу с диска????
|
</> |