程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SyBase數據庫 >> SyBase綜合文章 >> sybase調優方式和後續特性

sybase調優方式和後續特性

編輯:SyBase綜合文章

1. Sybase的性能調優方式
2. Sybase的鎖機制,事務機制
3. 怎樣提高大表(百萬條記錄)的操作效率(查詢,修改等)
4. Sybase 15.0.2後續版本規劃,有哪些新特性?
5. 怎樣提供Sybase的並發性?

1.鎖機制
全頁鎖(APL),數據頁鎖(DPL),數據行鎖(DOL)
=> 升級表鎖
從左至右:鎖粒度減小,系統開銷增大

2.事務機制
Sybase缺省選擇unchained的事務模式
chained 和 unchained本事對於事務處理無實質影響,我們需要關心的是事務隔離級別。
ISO標准的事務隔離級別共4種:0,1,2,3 Select @@isolation
在程序無法改動的情況下可以使用dbcc pss 查看隔離級別的統計。

       在商業關系數據庫管理系統領域中,有兩個陣營分別對應2類並發處理方法。第一個陣營

是基於鎖定構架實現悲觀並發的系統,它支持 SQL-92 標准(ANSI X3.135-1992,美國國家信息

系統標准 — 數據庫語言 — SQL,1992 年 11 月)中定義的四個 ANSI 標准隔離級別 – 這些

系統 Microsoft SQL Server、IBM DB2 和 Sybase Adaptive Server。第二個陣營基於保留事

務啟動時的數據視圖來實現樂觀並發的非標准的事務隔離模式 – 這個陣營中只有一個系統,就

是 Oracle。
       兩種模式各有利弊,一般來說後者並發性高,但也有性能開銷和應用限制方面的弱點。

例如Oracle在高並發的環境中,多版本讀一致性不能滿足事務一致性的要求,最終仍要利用鎖數

據的方法(for update)。且無法實現真正意義的事務隔離級別3(serializable)。當其他事務使

用 SERIALIZABLE 訪問已更新頁上的其他行時會導致 ORA-08177:“Can‘t serialize Access

for this transaction.”。解決方法是需要用select .. for update語句手工為讀語句加鎖。

(最終還是要通過read語句去阻塞write語句!)而前者通過降低鎖粒度和語句優化達也可以達

到很高的並發能力。

1.”寫”阻塞”寫”
2.”寫”阻塞”讀” 一般認為實現“寫”不阻塞“讀”的方式稱為髒讀。
3.”讀”阻塞”寫”
隔離級別!!!隔離級別2,3可能出現“讀”阻塞“寫”的情況
例如:隔離級別3以上
   IF NOT EXISTS(SELECT * FROM mbfeserialno
WHERE @vs_bankcode = nbkcode AND
lower(@vs_sqnflag) = lower(serialnocode)) (A.檢查序號)
BEGIN
                        INSERT INTO mbfeserialno ...    (序號不存在則新增初始序號)
END     UPDATE mbfeserialno
    SET serialnoval = serialnoval + 1
    WHERE @vs_bankcode = nbkcode AND lower(@vs_sqnflag) = lower(serialnocode)

(B.序號存在則原序號+1)

解決方法:
IF NOT EXISTS(SELECT * FROM mbfeserialno noholdlock
         WHERE @vs_bankcode = nbkcode AND
lower(@vs_sqnflag) = lower(serialnocode) ) (A.檢查序號)

1.問題定位:    (後者通過添加CPU,內存去解決)
2.鎖競爭處理:
    A.sp_object_stats找到競爭表
    B.應用表象區分:
        1.寫阻塞寫:
           鎖粒度的原因:降低表的鎖粒度 例如 APL => DOL
        2.寫阻塞讀         3.讀阻塞寫
           降低隔離級別或使用noholdlock
    C.SQL語句優化

1.對大表綁定高速緩存,開大I/O緩沖池
2.選擇恰當的鎖機制
3.SQL語句優化,建立恰當的索引(考慮寫操作,索引數量不易超過4個)
4.結合臨時表處理大表連接

一般來說,目前的關系型數據庫的索引技術可以確保百萬數量級的表的快速查詢。
千萬以上的表操作可以考慮使用表分區的辦法。

感謝Sybase的老伊支持才能有機會跟深入的接觸sybase,此篇摘錄Sybase的PPT中。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved