Home >Backend Development >PHP Tutorial >Improve PHP performance by caching database results (3)_PHP tutorial

Improve PHP performance by caching database results (3)_PHP tutorial

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOriginal
2016-07-13 17:02:57902browse

Add table to existing registration
The previous section described how to use the change notification service to make database register objects (ORDERS table in the example above) changes. But from a performance perspective, the client application may prefer to cache the ORDER_ITEMS table rather than the query result set of the ORDERS
table itself, because it has to retrieve only one row from the ORDERS table each time it accesses the order. , but multiple rows must be retrieved from the ORDER_ITEMS
table at the same time. In reality, an order may contain dozens or even hundreds of line items.
Since you have already registered the query for the ORDERS table, you do not need to create another registration to register the query for the
ORDER_ITEMS table. Instead, you can use an existing registration. To do this, you first need to retrieve the ID of an existing registration. The following query can be executed to accomplish this
job: The result may look like this:
After getting the registration ID, you can use DBMS_CHANGE_NOTIFICATION.ENABLE_REG function adds a new object to the registration as follows:

SELECT regid, table_name FROM user_change_notification_regs;

Done! From now on, the database will generate a notification in response to any changes made to ORDERS and ORDER_ITEMS and call the
REGID TABLE_NAME <br>----- -------------- <br>241 OE.ORDERS <br>
orders_nf_callback procedure to handle the notification. So the next step is to edit orders_nf_callback so that it can handle notifications generated by DML operations on the ORDER_ITEMS
table. But before re-creating the orders_nf_callback procedure, you need to create the following table type that will be referenced during the update process:
DECLARE <br>ord_id NUMBER; <br>BEGIN <br>DBMS_CHANGE_NOTIFICATION.ENABLE_REG(241); <br>SELECT order_id INTO ord_id FROM order_items WHERE ROWNUM < 2; <br>DBMS_CHANGE_NOTIFICATION.REG_END; <br>END; <br>/ <br>
Then, return to list
2, after the following line of code:

INSERT The following code:
CREATE TYPE rdesc_tab AS TABLE OF SYS.CHNF$_RDESC;

IF (tblname = 'OE.ORDER_ITEMS') THEN
IF (tblname = 'OE.ORDERS') THEN <br>FOR j IN 1..numrows LOOP <br>row_id := ntfnds.table_desc_array(i).row_desc_array(j).row_id; <br>SELECT order_id INTO ord_id FROM orders WHERE rowid = row_id; <br>sendNotification(url, tblname, ord_id);  <br>END LOOP; <br>END IF; <br>

<br>http://www.bkjia.com/PHPjc/631000.html<p align="left">www.bkjia.com</p><div style="display:none;">
<span id="url" itemprop="url">true</span><span id="indexUrl" itemprop="indexUrl">http: //www.bkjia.com/PHPjc/631000.html</span><span id="isOriginal" itemprop="isOriginal">TechArticle</span><span id="isBasedOnUrl" itemprop="isBasedOnUrl">Adding a table to an existing registration The previous section showed how to use the change notification service to enable the database to register objects (in the above Notify when a change occurs to the ORDERS table in the example. But from...</span><span id="genre" itemprop="genre"></span><span id="description" itemprop="description">
</span>
</div>
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn