Базы данных Oracle - статьи




Кэширование данных “только для чтения” - часть 2


  • Выполните оператор CREATE CACHE GROUP, чтобы определить группу связанных таблиц – в этом случае, только одну таблицу – для кэширования в Oracle TimesTen.
  • В листинге 2 показаны все четыре этих шага.

    Листинг 2.Создание группы кэша “только для чтения”

    Command> connect dsn=ttdispatch; Connection successful: . . . Command> call ttCacheUidPwdSet('ttdispatch','ttdispatch'); Command> call ttCacheStart(); Command> Command> CREATE READONLY

    > CACHE GROUP phone_data > AUTOREFRESH > INTERVAL 5 MINUTES > FROM dispatch.phones ( > phone_num VARCHAR(8) NOT NULL PRIMARY KEY, > street_addr VARCHAR(20), > city VARCHAR(15) > ); Warning 5112: Cache table DISPATCH.PHONES contains VARCHAR column(s). Oracle VARCHAR comparison rule is different. (Предупреждение 5112: Кэшированная таблица DISPATCH.PHONES содержит столбец(цы) VARCHAR. Правила сравнения для VARCHAR в Oracle отличаются.)

    Заметьте, что предупреждающее сообщение в конце листинга 2 служит напоминанием о том, что Oracle TimesTen считает пустую (незаполненную) строку (") не пустой (non-null), тогда как Oracle Database трактует пустую (empty) строку как пустую (null). При написании запросов с участием столбцов VARCHAR вы должны обращать внимание на подобные различия в поведении.

    Теперь у вас имеется группа кэша, названная phone_data. В составе этой группы имеется единственная пустая таблица по имени TELEPHONES. Для группы кэша устанавливается автоматическое обновление, для чего с пятиминутным интервалом производится опрос Oracle Database относительно изменений в данных. Однако, такое автоматическое обновление первоначально выполняется в приостановленном состоянии (во время паузы). Выполните оператор LOAD CACHE GROUP, показанный в листинге 3, чтобы инициализировать кэш текущими данными из Oracle Database и вывести группу кэша из паузы. Начиная с этого момента, каждые пять минут Oracle TimesTen будет делать запросы к Oracle Database (вы можете указать большие или меньшие интервалы) об изменениях в таблице TELEPHONES. Триггеры и таблицы поддержки, принадлежащие администратору кэша (в этом случае, ttdispatch) делают такой опрос весьма эффективным.

    Листинг 3. Выполнение начальной загрузки

    Command> SELECT * FROM phones; 0 rows found.

    Command> LOAD CACHE GROUP phone_data > COMMIT EVERY 100 ROWS; 6 rows affected.

    Command> select * from phones; < 555-1234, 100 W. Munising Ave, Munising > < 555-2345, 101 E. Varnum, Munising >

    < 555-3456, E2904 S. First, Trenary > < 555-4567, N3284 M-67, Limestone > < 555-5678, N7569 Spruce St., AuTrain > < 555-6789, 112 Colwell, Grand Marais > 6 rows found.




    Содержание  Назад  Вперед