Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

В режиме «1С:Предприятие». Теория: устройство кеша. Обычный кеш




В режиме «1С: Предприятие»

Запустим «1С: Предприятие» в режиме отладки и проверим работу нового обработчика события ОбработкаПроведения, перепроведя все документы Оказание услуги.

В результате все работает точно так же, с точки зрения пользователя, но проведение документов организовано методически правильно и более эффективно с точки зрения доступа к данным.

 

Теория: устройство кеша

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

Система «1С: Предприятие» использует механизм кеширования данных объектов, считанных из базы данных при использовании объектной техники.

Таким образом, для получения реквизитов какого-либо объекта через ссылку выполняется обращение к кешу объектов, расположенному в оперативной памяти.

Кеш объектов состоит из двух частей: транзакционного кеша и обычного кеша. В зависимости от того, происходит ли обращение в рамках транзакции или нет, в действие вступает тот или иной кеш (рис. 14. 33).

Все данные, находящиеся в кеше, предназначены только для чтения (ReadOnly). Таким образом, чтение любых данных, получаемых через ссылку, выполняется только через кеш объектов, а запись – механиз- мами самих программных объектов.


Рис. 14. 33. Кеш объектов

 

Обычный кеш

Если при обращении к обычному кешу требуемых данных в нем нет, то выполняется чтение данных объекта из базы данных и сохранение их в кеше. Уникальным идентификатором для кеша в данном случае будет являться ссылка на объект базы данных. Поэтому данные каждого считанного объекта могут существовать в кеше в одном из двух видов: либо все данные объекта, либо представление объекта.

Таким образом, если мы обратимся к кешу для получения представ- ления объекта и в кеше есть информация для нашей ссылки, данные будут взяты из кеша (если в кеше весь объект, нужное представление будет получено из данных объекта).

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

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

Если в кеше весь объект, значение реквизита будет получено из кеша. Если в кеше представление объекта, оно будет удалено из кеша,


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

Считанные данные будут находиться в кеше до тех пор, пока не наступит одно из следующих событий:

„ считанные данные будут вытеснены из кеша другими считан- ными данными других объектов (переполнение кеша);

„ при очередном обращении к кешу окажется, что считанные дан- ные были изменены в базе данных;

„ закончится интервал времени в 20 минут.

Все считанные данные помещаются в последовательную очередь, и, поскольку объем кеша ограничен, наиболее старые данные будут вытесняться из кеша последними считанными.

При повторном обращении к кешу за данными уже считанного объекта будет анализироваться интервал времени, прошедший с момента появления данных в кеше.

Если обращение происходит в пределах 20 секунд после посту- пления данных в кеш, данные считаются верными (валидными). Если интервал превысил 20 секунд, будет выполняться проверка на соот- ветствие версии данных, хранящихся в кеше, версии данных, находя- щихся в базе данных.

Если окажется, что версии данных не совпадают (т. е. произошло изменение данных в базе данных), данные, находящиеся в кеше, будут удалены из него, и будет выполнено повторное считывание данных из базы данных. Начиная с этого момента, идет отсчет следу- ющего 20-секундного интервала валидности этих данных.

Кроме всех вышеперечисленных событий считанные данные будут удалены из кеша по истечении 20 минут после их последнего считы- вания из базы данных.

Таким образом, при последовательном выполнении двух операторов (листинг 14. 43), где Номенклатура – это ссылка на объект справоч- ника, на выполнение второго оператора будет тратиться гораздо меньше времени, поскольку в первом случае будет выполняться обращение к базе данных, а во втором – чтение из оперативной памяти (кеша объектов).


 

 

листинг 14. 43. Последовательность операторов

 

 

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...