国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > 綜合 > 正文

SQL 調試指南

2024-07-21 02:33:18
字體:
來源:轉載
供稿:網友

  一 概述
  
  我的工作是開發移動電信操作系統. 當客戶通過網絡或語音終端申請一項服務的時候, 我們的系統必須提供一個快速的回應. 即使是要求不到一秒的回答時限, 我們仍然需要在容量巨大的DB端執行復雜的SQL語句.
  
  在這種情況下, 一個簡單的低效率的查詢會帶來災難性的后果. 一個不合適的SQL語句有可能耗盡整個DB的處理資源, 這樣一來就導致DB不能處理其他的客戶請求. 而且, 這種情況往往發生在新的服務項目的發布之后, 也就是說, 正是市場行銷的高峰期. 你能想象當這樣的問題發生時我們的高級市場經理的心情嗎?
  
  不幸的是,低效率的SQL語句是不可避免的. 系統通常都是在遠遠低于產品正常運行時的數據數量之上進行測試的, 所以系統的性能隱患不可能被完全發現.
  
  這也正是每一個DB開發人員都應該明白基本SQL調試原理的初衷. 這篇文章將對此類問題做一個理論性的闡述. 在讀完文章之后,你應該能回答: 對特定數據量的數據I, 這個執行計劃是合理的嗎?
  
  我不得不提醒你, 這是一個關于理論的文章. 我知道沒有人喜歡理論, 但是沒有其他有效的方法來數說一二. 那么, 別擔心, 讓我們繼續吧, 也許我們能從這里得到一些幫助和啟示.
  
  在這片文章里, 將說明以下幾個方面:
  什么是最優化
  數據表記錄查詢
  嵌套循環連接表
  
  二 假定
  
 SQL 調試指南 - 數據庫執行計劃(圖)(圖一)

  CUSTOMERS表包含了所有客戶的總體信息. 假設這個公司有一百萬個客戶.CUSTOMERS表有一個主鍵CUSTOMER_ID, 這個主鍵有一個索引PK_CUSTOMERS. LAST_NAME列也有一個名為IX_CUSTOMERS_LAST_NAME的索引.表中有100000個不同的Last Name. 表中的記錄平均有100 bytes. CUSTOMERS表中的REGION_ID字段連接REGIONS表, REGIONS表包含了所有的大約50個國家和地區, 有一個主鍵GEGION_ID和關于這個主鍵的索引PK_REGIONS.
  
  我將使用RECORDS(CUSTOMERS)和PAGES(CUSTOMERS)分別來表示CUSTOMERS表的記錄數量和頁數. 對于其它的表甚至索引也用類型的標志方法. PRob[CUSTOMERS.LAST_NAME = @LastName]表示一個客戶名字為@LastName的可能性.
  
  三 什么是執行計劃
  
  一個SQL語句表示你所想要得到的但是并沒有告訴Server如何去做. 例如, 利用一個SQL語句, 你可能要Server取出所有住在Prague的客戶. 當Server收到的這條SQL的時候, 第一件事情并不是解析它. 假如這條SQL沒有語法錯誤, Server才會繼續工作. Server會決定最好的計算方式. Server會選擇, 是讀整個客戶表好呢, 還是利用索引會比較快些. Server會比較所有可能方法所耗費的資源. 最終SQL語句被物理性執行的方法被稱做執行計劃或者是查詢計劃.
  
  一個執行計劃右若干基本操作組成. 例如, 遍歷整張表, 利用索引, 執行一個嵌套循環或Hash連接等等. 我們將在這一系列的文章里具體討論. 所有的基本操作都有一個輸出: 結果集. 有些, 象嵌套循環, 有一個輸入. 其他的, 象Hash連接, 有兩個輸入. 每個輸入應與其它基本操作的的輸出想連接. 這也就是為什么一個執行可以被看做是一個數的原因: 信息從樹葉流向樹根. 在文章的下面部分有很多諸如此類的例子.
  
  負責處理或計算最優的執行計劃的DB Server組件叫優化器. 優化器是建立在其所在的DB資源的基礎上而進行工作的.
  
  四 如何檢查執行計劃
  
  假如你在使用的是Microsoft SQL Server 2000, 你可以使用Query Analyzer. 簡單地輸入一個SQL語句并按Ctrl+L鍵. 查詢將被圖形化的顯示出來:
  
 SQL 調試指南 - 數據庫執行計劃(圖)(圖二)

  負責處理或計算最優的執行計劃的DB Server組件叫優化器. 優化器是建立在其所在的DB資源的基礎上而進行工作的.

上一篇:ABOUT : 字符數組

下一篇:cube子句的用法

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 理塘县| 漳平市| 蚌埠市| 天祝| 安新县| 郓城县| 永春县| 阜平县| 蒙山县| 靖边县| 大埔区| 钟祥市| 浦县| 泰安市| 海城市| 台江县| 巩留县| 吉木萨尔县| 梁山县| 余姚市| 孝昌县| 和林格尔县| 宁陵县| 华池县| 长宁县| 承德市| 铜陵市| 休宁县| 宜都市| 石屏县| 疏勒县| 灵璧县| 镇江市| 稷山县| 西宁市| 梧州市| 珲春市| 察隅县| 紫云| 汕头市| 延川县|