當前位置:首頁 » 操作系統 » 跨資料庫觸發器

跨資料庫觸發器

發布時間: 2024-11-09 21:29:58

『壹』 如何使觸發器具備良好的性能

觸發器使得表和跨資料庫之間數據的自動同步行為變得簡單。但是,那些一眼看上去不是很明顯的東西卻會對他們的性能造成顯著的影響。這里我將描述一個命令,他可用來減少一些不可預料的問題產生的影響 。
以反復被觸發的INSERT觸發器為例,尤其是當使用INSERT INTO語句用來進行大量插入操作時。在語句執行的過程中,當觸發器一遍又一遍的被激發的情況下,觸發器將會對每個INSERT動作發布DONE_IN_PROC消息,這會使速度明顯下降。
尤其是當觸發器作為一個預定了時間的sql Server Agent工作的結果而被觸發時,這個速度的減慢是特別明顯的 。SQL Server Agent自動在每個DONE_IN_PROC 信號後強加一個延遲,以避免伺服器擁塞 。假如您想通過查詢分析器來運行同樣的一組命令,由於沒有強加這樣的延遲,他的執行將會快得多。假如您通過查詢分析器運行這樣的查詢並且查看多個語句產生的多個"n rows affected",那麼很有可能查詢會被反復執行,並且觸發器也被重新觸發多次,這比他實際需要的次數要多很多。
要關掉DONE_IN_PROC消息,能夠在觸發器語句的開始用SET NOCOUNT ON命令。大多數時候,以任何方式對行進行計數都是無需的。假如確實需要,您能夠考慮重新構造命令來觸發觸發器(或是觸發器本身),這樣就使任何的改變作為一個命令完成。

『貳』 在mysql中的兩個不同的資料庫之間建立觸發器連接

若想利用此方法達到反向同步則可能出現察鬧問題,比如想在parkfee資料庫有絕大新數據插入時讓當前資料庫也同時插入一條記錄,建立一個觸發器,則形成了一個循環觸發,當插入數據時會報大於最大遞歸次數錯。因此因避敗宏罩免這樣的觸發循環,若要達到類似效果還須想別的方法。(待續)
補充:
若兩個庫處於不同的資料庫伺服器則應先進行以下操作:
在 server1 上創建連接伺服器,以便在 server1 中操作 server2,實現同步
exec sp_addlinkedserver 'server2','','SQLOLEDB','server2的資料庫實例名或ip'
exec sp_addlinkedsrvlogin 'server2','false',null,'用戶名','密碼'
go

熱點內容
mega神奇寶貝伺服器ip 發布:2024-11-13 06:37:08 瀏覽:394
python主要用來做什麼 發布:2024-11-13 06:36:59 瀏覽:163
extjs文件上傳java 發布:2024-11-13 06:22:49 瀏覽:692
電腦數據怎麼備份到伺服器 發布:2024-11-13 06:19:31 瀏覽:404
c語言函頭文件 發布:2024-11-13 06:14:40 瀏覽:37
編譯java程序的命令是什麼 發布:2024-11-13 06:09:32 瀏覽:857
編譯dll依賴另一個dll 發布:2024-11-13 06:09:25 瀏覽:124
祝編程老師 發布:2024-11-13 06:07:26 瀏覽:506
五格殿下編程 發布:2024-11-13 05:54:11 瀏覽:214
學生密碼筆盒原始密碼多少 發布:2024-11-13 05:30:06 瀏覽:770