Загрузка таблиц базы данных только для чтения в память - PullRequest
1 голос
/ 04 сентября 2008

В одном из моих приложений у меня есть таблица базы данных 1 ГБ, которая используется для справочных данных. Из этой таблицы у него огромное количество операций чтения, но никогда не было записей. Мне было интересно, есть ли способ загрузить данные в оперативную память, чтобы к ним не обращался с диска?

Я использую SQL Server 2005

Ответы [ 4 ]

5 голосов
/ 04 сентября 2008

Если у вас достаточно ОЗУ, SQL выполнит выдающуюся работу, определив, что загружать в ОЗУ и что искать на диске.

Этот вопрос часто задают, и он напоминает мне о людях, пытающихся вручную установить, на каком «ядре» будет работать их процесс - пусть ОС (или в данном случае БД) делает то, для чего она была разработана.

Если вы хотите убедиться, что SQL фактически читает ваши искомые данные из кэша, вы можете запустить нагрузочный тест и использовать Sysinternals FileMon , Process Explorer и Process Monitor для проверки того, что таблица 1 ГБ не читается из. По этой причине мы иногда помещаем наши «поисковые» данные в отдельную файловую группу, чтобы было очень легко отслеживать, когда к ним обращаются на диске.

Надеюсь, это поможет.

2 голосов
/ 04 сентября 2008

Вы захотите взглянуть на memcached. Это то, что многие огромные (и хорошо масштабированные) сайты используют для решения проблем, подобных этой. Если у вас есть несколько запасных серверов, вы можете легко настроить их для хранения большей части ваших данных в памяти.

http://en.wikipedia.org/wiki/Memcached

http://www.danga.com/memcached/

http://www.socialtext.net/memcached/

1 голос
/ 02 октября 2008

Просто чтобы прояснить проблему для sql2005 и выше:

Эта функциональность была введена для производительность в SQL Server версии 6.5. DBCC PINTABLE имеет очень нежелательные побочные эффекты. К ним относятся потенциал повредить буферный пул. DBCC PINTABLE не требуется и имеет были удалены, чтобы предотвратить дополнительные проблемы. Синтаксис этой команды все еще работает, но не влияет на сервер.

0 голосов
/ 19 сентября 2008

DBCC PINTABLE явно закрепит таблицу в ядре, если вы хотите, чтобы она оставалась в кэше.

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