SQL Server數(shù)據(jù)庫查詢速度慢的原因有很多,常見的有以下幾種:
成都網(wǎng)站建設哪家好,找成都創(chuàng)新互聯(lián)公司!專注于網(wǎng)頁設計、成都網(wǎng)站建設、微信開發(fā)、小程序設計、集團成都企業(yè)網(wǎng)站定制等服務項目。核心團隊均擁有互聯(lián)網(wǎng)行業(yè)多年經驗,服務眾多知名企業(yè)客戶;涵蓋的客戶類型包括:石雕等眾多領域,積累了大量豐富的經驗,同時也獲得了客戶的一致贊美!
1、沒有索引或者沒有用到索引(這是查詢慢最常見的問題,是數(shù)據(jù)庫設計的缺陷)
2、I/O吞吐量小,形成了瓶頸效應。
3、沒有創(chuàng)建計算列導致查詢不優(yōu)化。
4、內存不足
5、網(wǎng)絡速度慢
6、查詢出的數(shù)據(jù)量過大(可以采用多次查詢,其他的方法降低數(shù)據(jù)量)
7、鎖或者死鎖(這也是查詢慢最常見的問題,是程序設計的缺陷)
8、sp_lock,sp_who,活動的用戶查看,原因是讀寫競爭資源。
9、返回了不必要的行和列
10、查詢語句不好,沒有優(yōu)化
●可以通過以下方法來優(yōu)化查詢 :
1、把數(shù)據(jù)、日志、索引放到不同的I/O設備上,增加讀取速度,以前可以將Tempdb應放在RAID0上,SQL2000不在支持。數(shù)據(jù)量(尺寸)越大,提高I/O越重要。
2、縱向、橫向分割表,減少表的尺寸(sp_spaceuse)
3、升級硬件
4、根據(jù)查詢條件,建立索引,優(yōu)化索引、優(yōu)化訪問方式,限制結果集的數(shù)據(jù)量。注意填充因子要適當(最好是使用默認值0)。索引應該盡量小,使用字節(jié)數(shù)小的列建索引好(參照索引的創(chuàng)建),不要對有限的幾個值的字段建單一索引如性別字段。
5、提高網(wǎng)速。
6、擴大服務器的內存,Windows 2000和SQL server 2000能支持4-8G的內存。
配置虛擬內存:虛擬內存大小應基于計算機上并發(fā)運行的服務進行配置。運行 Microsoft SQL Server? 2000時,可考慮將虛擬內存大小設置為計算機中安裝的物理內存的1.5倍。如果另外安裝了全文檢索功能,并打算運行Microsoft搜索服務以便執(zhí)行全文索引和查詢,可考慮:將虛擬內存大小配置為至少是計算機中安裝的物理內存的3倍。將SQL Server max server memory服務器配置選項配置為物理內存的1.5倍(虛擬內存大小設置的一半)。
7、增加服務器CPU個數(shù);但是必須 明白并行處理串行處理更需要資源例如內存。使用并行還是串行程是MSSQL自動評估選擇的。單個任務分解成多個任務,就可以在處理器上運行。例如耽擱查詢 的排序、連接、掃描和GROUP BY字句同時執(zhí)行,SQL SERVER根據(jù)系統(tǒng)的負載情況決定最優(yōu)的并行等級,復雜的需要消耗大量的CPU的查詢最適合并行處理。但是更新操作UPDATE,INSERT, DELETE還不能并行處理。
8、如果是使用like進行查詢的話,簡單的使用index是不行的,但是全文索引,耗空間。 like ''a%'' 使用索引 like ''%a'' 不使用索引用 like ''%a%'' 查詢時,查詢耗時和字段值總長度成正比,所以不能用CHAR類型,而是VARCHAR。對于字段的值很長的建全文索引。
9、DB Server 和APPLication Server 分離;OLTP和OLAP分離
10、分布式分區(qū)視圖可用于實現(xiàn)數(shù)據(jù)庫服務器聯(lián)合體。
聯(lián)合體是一組分開管理的服務器,但它們相互協(xié)作分擔系統(tǒng)的處理負荷。這種通過分區(qū)數(shù)據(jù)形成數(shù)據(jù)庫服務器聯(lián)合體的機制能夠擴大一組服務器,以支持大型的多層 Web 站點的處理需要。有關更多信息,參見設計聯(lián)合數(shù)據(jù)庫服務器。(參照SQL幫助文件''分區(qū)視圖'')
a、在實現(xiàn)分區(qū)視圖之前,必須先水平分區(qū)表
b、 在創(chuàng)建成員表后,在每個成員服務器上定義一個分布式分區(qū)視圖,并且每個視圖具有相同的名稱。這樣,引用分布式分區(qū)視圖名的查詢可以在任何一個成員服務器上 運行。系統(tǒng)操作如同每個成員服務器上都有一個原始表的復本一樣,但其實每個服務器上只有一個成員表和一個分布式分區(qū)視圖。數(shù)據(jù)的位置對應用程序是透明的。
11、重建索引 DBCC REINDEX ,DBCC INDEXDEFRAG,收縮數(shù)據(jù)和日志 DBCC SHRINKDB,DBCC SHRINKFILE. 設置自動收縮日志.對于大的數(shù)據(jù)庫不要設置數(shù)據(jù)庫自動增長,它會降低服務器的性能。
在T-sql的寫法上有很大的講究,下面列出常見的要點:首先,DBMS處理查詢計劃的過程是這樣的:
1、 查詢語句的詞法、語法檢查
2、 將語句提交給DBMS的查詢優(yōu)化器
3、 優(yōu)化器做代數(shù)優(yōu)化和存取路徑的優(yōu)化
4、 由預編譯模塊生成查詢規(guī)劃
5、 然后在合適的時間提交給系統(tǒng)處理執(zhí)行
6、 最后將執(zhí)行結果返回給用戶。
其次,看一下SQL SERVER的數(shù)據(jù)存放的結構:一個頁面的大小為8K(8060)字節(jié),8個頁面為一個盤區(qū),按照B樹存放。
我估計這個答案出錯了,根據(jù)四級的復習資料:估算存儲空間:SQLServer數(shù)據(jù)存儲單位為頁(Page),一個數(shù)據(jù)頁是一塊8KB的連續(xù)磁盤空間,行不能跨頁存儲,一行數(shù)據(jù)的大小不能超過一頁的大小。一個表10000行數(shù)據(jù),每行3000字節(jié),則需要(10000/2)*8KB=40MB的空間. 資料上的我認為是對的,3000個字節(jié)在8k的頁中是只能放兩條,而2000字節(jié)的數(shù)據(jù)中一頁中應該可以放下4條數(shù)據(jù),所以正確答案應該是(100000/4)*8k=200MB
前臺要掌握javascript,jQuery等這些都是基本的了
其他的就看水平了WebServices,MVC,EntityFramework,ajax等最好也都了解
數(shù)據(jù)庫SQLSERVER LinQ什么的吧
Sql Server 區(qū)管理(GAM,SGAM)
大家都知道Sql Server 中數(shù)據(jù)文件存儲的最小單位是頁面(Page),但實際SQLSERVE并不是以頁面為單位給數(shù)據(jù)分配空間的,Sql Server默認的存儲分配單位是盤區(qū)(Extend)。這樣做的主要原因是為了避免頻繁的讀寫IO,提升性能。在表或其它對象分配存儲空間,不是直接分配一個8K的頁面,而是以一個盤區(qū)(Extend)為存儲分配單位,一個盤區(qū)為8個頁面(Size = 8*8K=64K)。
這樣,對區(qū)得操作就會非常頻繁,也要求Sql Server有自己的一套系統(tǒng)管理著數(shù)量眾多的區(qū)。其中最突出的出一個問題,那就是在存儲那些只有少量數(shù)據(jù),不足8K的對象,如果也是分配給一個盤區(qū),就會存在存儲空間上的浪費,降低了空間分配效率。
為解決上述問題,SQLSERVER提供了一種解決方案,定義了兩種盤區(qū)類型,統(tǒng)一盤區(qū)和混合盤區(qū)。
全局分配映射表 (GAM)?:統(tǒng)一盤區(qū),GAM 頁記錄已分配的區(qū)。每個 GAM 包含 64,000 個區(qū),相當于近 4 GB 的數(shù)據(jù)。GAM 用一個位來表示所涵蓋區(qū)間內的每個區(qū)的狀態(tài)。如果位為 1,則區(qū)可用;如果位為 0,則區(qū)已分配。?
共享全局分配映射表 (SGAM)?:由多個對象共同擁有該盤區(qū),SGAM 頁記錄當前用作混合區(qū)且至少有一個未使用的頁的區(qū)。每個 SGAM 包含 64,000 個區(qū),相當于近 4 GB 的數(shù)據(jù)。SGAM 用一個位來表示所涵蓋區(qū)間內的每個區(qū)的狀態(tài)。如果位為 1,則區(qū)正用作混合區(qū)且有可用頁。如果位為 0,則區(qū)未用作混合區(qū),或者雖然用作混合區(qū)但其所有頁均在使用中。?
在實際為對象分配存儲盤區(qū)時,為了提高空間利用率,默認的情況下,如果一個對象一開始大小小于8個頁面,就盡量放在混合盤區(qū)中,如果該對象大小增加到8個頁面后,SQLSERVER會為這個對象重新分配一個統(tǒng)一盤區(qū)。
據(jù)區(qū)當前的使用情況,GAM 和 SGAM 中每個區(qū)具有以下位模式:
這將簡化區(qū)管理算法。若要分配統(tǒng)一區(qū),數(shù)據(jù)庫引擎將在 GAM 中搜索為 1 的位,并將其設置為 0。若要查找具有可用頁的混合區(qū),數(shù)據(jù)庫引擎將在 SGAM 中搜索為 1 的位。若要分配混合區(qū),數(shù)據(jù)庫引擎將在 GAM 中搜索為 1 的位,將其設置為 0,然后將 SGAM 中對應的位設置為 1。若要釋放區(qū),數(shù)據(jù)庫引擎確保將 GAM 位設置為 1,將 SGAM 位設置為 0。實際上,數(shù)據(jù)庫引擎內部使用的算法比本主題中介紹的更為復雜,因為數(shù)據(jù)庫引擎在數(shù)據(jù)庫中均勻分布數(shù)據(jù)。但是,由于無需管理區(qū)分配信息鏈,因此即使是實際算法也會被簡化。
管理Sql Server可用空間
首先摘錄段 MSDN 的一段官方解釋:
頁可用空間 (PFS) 頁記錄每頁的分配狀態(tài),是否已分配單個頁以及每頁的可用空間量。PFS 對每頁都有一個字節(jié),記錄該頁是否已分配。如果已分配,則記錄該頁是為空、已滿 1% 到 50%、已滿 51% 到 80%、已滿 81% 到 95% 還是已滿 96% 到 100%。
將區(qū)分配給對象后,數(shù)據(jù)庫引擎將使用 PFS 頁來記錄區(qū)中的哪些頁已分配或哪些頁可用。數(shù)據(jù)庫引擎必須分配新頁時,將使用此信息。保留的頁中的可用空間量僅用于堆和 Text/Image 頁。數(shù)據(jù)庫引擎必須找到一個具有可用空間的頁來保存新插入的行時,使用此信息。索引不要求跟蹤頁的可用空間,因為插入新行的點是由索引鍵值設置的。
在數(shù)據(jù)文件中,PFS 頁是文件頭頁之后的第一頁(頁碼為 1)。接著是 GAM 頁(頁碼為 2),然后是 SGAM 頁(頁碼為 3)。第一個 PFS 頁之后是一個大小大約為 8,000 頁的 PFS 頁。在第 2 頁的第一個 GAM 頁之后還有另一個 GAM 頁(包含 64,000 個區(qū)),在第 3 頁的第一個 SGAM 頁之后也有另一個 SGAM 頁(包含 64,000 個區(qū))。下圖顯示了數(shù)據(jù)庫引擎用來分配和管理區(qū)的頁順序。
看過之后,讓人一頭霧水,真是不知所云,真佩服這些 MSDN 是如何翻譯的,看來中文 MSDN 太不靠譜,最后沒辦法,只能google了
其實上面說的意思就是:Sql Server 管理可用空間的方法是,查找每個每個頁面是否使用,以及使用情況情況。這時就需要一個頁面來記錄各個頁面的使用情況了,這就是 PFS 頁。
PFS(Page Free Space),也叫頁面自由空間,該頁面用來跟蹤一個文件中每一個特定的頁面的利用率情況。一個文件中第二個頁面(頁碼1)就是PFS頁面,該頁面的每個字節(jié)都記錄了相應頁面的分配情況、頁面類型、是否IAM頁、是否包含刪除記錄、以及空間利用率信息;PFS能夠管理和跟蹤8088個頁面的使用情況,即接近64M的空間,以后每8088個頁面將再出現(xiàn)一次。
讓我們首先了解一下PFS的頁面管理字節(jié)的構造,管理單位為字節(jié),每字節(jié)管理一個頁面。
第0個bit為保留字節(jié),始終為0
第1個bit表示該頁面是否已分配,我們知道GAM頁用來管理區(qū)是否已分配,但一個區(qū)包含8個頁面,所以用該bit用來準確定位該區(qū)的某個頁面是否已分配出去了。
第2個bit表示該頁面是否混合分區(qū)的一個頁面。
第3個bit表示該頁面是否是一個IAM(索引分配映射)頁面。
第4個bit表示該頁面中是否包含幻影或已刪除記錄,這有助于SQL Server定期清理幻影或已刪除記錄。
第5~7個頁面表示該頁面的空間使用率情況。
SQLSERVER有兩種數(shù)據(jù)存儲文件,分別是數(shù)據(jù)文件和日志文件。
其中:數(shù)據(jù)文件是以8K(=8192Byte)的頁面(Page)作為存儲單元的。
而日志文件是以日志記錄作為存儲單元。
數(shù)據(jù)文件以頁面做為存儲單元存儲數(shù)據(jù),要理解數(shù)據(jù)文件的存儲方式,必須了解SQLSERVER中定義的頁面類型種類。
1,oracle支持多種操作系統(tǒng),sql server只支持windows。
2,oracle給dba更多的靈活性,可以根據(jù)實際情況調整參數(shù),使你的應用的性能最佳,因而帶來一個缺點是很難上手;sql server則相反,當然很容易上手。
體系結構
oracle的文件體系結構為:
數(shù)據(jù)文件 .dbf(真實數(shù)據(jù))
日志文件 .rdo
控制文件 .ctl
參數(shù)文件 .ora
sql server的文件體系結構為:
.mdf (數(shù)據(jù)字典)
.ndf (數(shù)據(jù)文件)
.ldf (日志文件)
oracle存儲結構:
在oracle里有兩個塊參數(shù)pctfree(填充因子)和pctused(復用因子),可控制塊確定塊本身何時有,何時沒有足夠的空間接受新信息(對塊的存儲情況的分析機制)
這樣可降低數(shù)據(jù)行連接與行遷移的可能性。塊的大小可設置(oltp塊和dss塊)
在oracle中,將連續(xù)的塊組成區(qū),可動態(tài)分配區(qū)(區(qū)的分配可以是等額的也可以是自增長的)可減少空間分配次數(shù)
在oraclel里表可以分為多個段,段由多個區(qū)組成,每個段可指定分配在哪個表空間里(段的類型分為:數(shù)據(jù)段、索引段、回滾段、臨時段、cash段。oracle里還可對表進行分區(qū),可按照用戶定義的業(yè)務規(guī)則、條件或規(guī)范,物理的分開磁盤上的數(shù)據(jù)。
這樣大大降低了磁盤爭用的可能性。
oracle有七個基本表空間:
·system表空間(存放數(shù)據(jù)字典和數(shù)據(jù)管理自身所需的信息)
·rbs回滾表空間
·temp臨時表空間
·tools交互式表空間
·users用戶默認表空間
·indx索引表空間
·dbsys福數(shù)據(jù)表空間
不同的數(shù)據(jù)分別放在不同的表空間(數(shù)據(jù)字典與真實數(shù)據(jù)分開存放),在oracle里基表(存儲系統(tǒng)參數(shù)信息)是加密存儲,任何人都無法訪問。只能通過用戶可視視圖查看。
sql server 存儲結構
以頁為最小分配單位,每個頁為8k(不可控制,缺乏對頁的存儲情況的分析機制),可將8個連續(xù)的頁的組成一個‘擴展’,以進一步減少分配時所耗用的資源。(分配缺乏靈活性),在sql server里數(shù)據(jù)以表的方式存放,而表是存放在數(shù)據(jù)庫里。
sql server有五個基本數(shù)據(jù)庫:
·master(數(shù)據(jù)字典)
·mode(存放樣版)
·tempdb(臨時數(shù)據(jù)庫)
·msdb(存放調度信息和日志信息)
·pubs(示例數(shù)據(jù)庫)
真實數(shù)據(jù)與數(shù)據(jù)字典存放在一起。對系統(tǒng)參數(shù)信息無安全機制。
oracle登入管理:
·system/manager (初始帳戶)
·sys/change_on_nstall
·install/oracle(安裝帳戶)
·scott/tiger(示例數(shù)據(jù)庫,測試用)
在oracle里默認只有三個系統(tǒng)用戶,oracle是通過用戶登入。
sql server登入管理:
·sql server身份驗證
·windows 身份驗證
在sql server里是通過windows用戶帳戶或是用sql server身份驗證連接數(shù)據(jù)庫的。
sql不是一種語言,而是對oracle數(shù)據(jù)庫傳輸指令的一種方式。
sql中null既不是字符也不是數(shù)字,它是缺省數(shù)據(jù)。oracle提供了nvl函數(shù)來解決。
oracle中的字符串連接為 string1‖string2 ,sql中為string1+string2.
集合操作:在sql中只有union(并操作),oracle中包含minus(差操作)、interect(交操作)、union(并操作)。
索引:sql的索引分為聚集索引和非聚集索引,還包括全文索引;
oracle的索引包括:b+樹索引,bitmap位圖索引,函數(shù)索引,反序索引,
主鍵索引,散列索引,本地索引。
oracle的數(shù)據(jù)類型比較復雜,有基本數(shù)據(jù)類型,衍生型,列對象型,表對象型,結構體型;
sql中的數(shù)據(jù)比較簡單,只有一些簡單的基本數(shù)據(jù)類型無法提供事務操作。
在sql中如果一個事務從開始執(zhí)行到結束時了錯了,它就會回滾到開始之前;
在oracle中它采用的是定點回滾,就是該事務函數(shù)化和精確錯誤定位,用savepoint標記保存點,用rollback標記回滾錯誤的保存點。
在sql中循環(huán)只有while一種這用起來不靈活,在oracle中有多種循環(huán)(loop循環(huán)、while循環(huán)、for循環(huán))。
在sql中游標的使用比較復雜,不能同時打開一個以上的游標,因為它只有一個全局變量@@fast_statues而且聲明游標也麻煩,關閉游標時也不清除內存的;oracle中游標是以提高速度全部統(tǒng)一的單項游標,可以允許多用戶異步讀取,而且聲明比較簡單,就一句declare cursor游標名 is select 語句就可以了。
容錯機制:sql中的錯誤機制比較復雜,沒有提供錯誤描述;oracle中容錯類型有三種,一個是預定義錯誤,一個是非預定義錯誤,一個是用戶自定義,其中在自定義錯誤中它有兩個是在sql中不有的,那就是sqlcode 錯誤號、sqlerrm錯誤描述。
文件體系結構:sql中有.mdf(主要數(shù)據(jù)文件)、.ndf(擴展文件,可以有多個)、
.ldf(日志文件,可以有多個,存放在聯(lián)機重做日志數(shù)據(jù),這里的日志文件有一個缺點就是如果日志文件已填小巧玲瓏的話,sql將自動停止運行并等待人工干預,所以要經常監(jiān)控日志的情況保證系統(tǒng)的穩(wěn)定運行)。oracle中有.dbf(主要數(shù)據(jù)文件)、.rdo(日志文件,用來做災難性的數(shù)據(jù)備份)、.ctl(控制文件,將數(shù)據(jù)庫的物理文件映射到了數(shù)據(jù)字典中的邏輯表空間和連機重做日志文件上去,確保數(shù)據(jù)的一致性)、.ora(參數(shù)文件)。
sql只能是本機備份本機的數(shù)據(jù)庫,無法聯(lián)機備份,而且備份壓縮很低,占用了大量空間;oracle提供了7種備份機制,具有聯(lián)機備份功能,有志門的備份機子。
oracle的日志默認有3個,先寫入1號日志,滿了后再寫入2號日志,2號滿了再寫入3號日志,3號滿了后oracle將自動備分1號日志的內容,然后清空后寫入新的日志信息,且oracle的日志有多路復用功能,我們可以為日志創(chuàng)建多個鏡像,把相同的日志信息同時寫入多個日志文件中,這樣可以防止磁盤損壞造成的數(shù)據(jù)丟失。
sql server對每個數(shù)據(jù)庫只能分配一個日志文件。且當日志填滿后,日志將停止工作,等待人工干預,而無法自動重用。
oracle的控制文件記錄了數(shù)據(jù)庫文件的物理位置和有效性,在每次打開oracle系統(tǒng)都將自動對數(shù)據(jù)進行驗證,查看其有效性,防止數(shù)據(jù)的丟失,這體現(xiàn)了oracle對數(shù)據(jù)管理的嚴密性。
sql server無此安全機制,只用在使用到了數(shù)據(jù)庫的信息后,系統(tǒng)才去查找數(shù)據(jù)是否存在。
oracle的參數(shù)文件init.ora是可調的,既我們可以根據(jù)數(shù)據(jù)庫的規(guī)模調整oracle對系統(tǒng)資源的使用情況,以達到最合理的資源分配,讓oracle達到最佳的性能。
sql server的配置參數(shù)是內定的不可調整,它對系統(tǒng)資源的分配是固定的,不受擁護控制,因此無法同時處理大量用戶的需求,這限制了它只能作為中,小型數(shù)據(jù)庫。
oracle以塊為最小存儲單位,以區(qū)為單位分配空間,用戶可以根據(jù)需要自己定義塊的大小,且區(qū)可以按等額或遞增進行分配,這可以大大減少系統(tǒng)的i/o操作提高數(shù)據(jù)庫的性能。
sql server中以頁為單位或使用擴展類型以8頁為一單位進行空間分配而無法人工干預,當遇到頻繁存儲或大數(shù)據(jù)量存儲時,系統(tǒng)將頻繁進行i/o操作使工作效率低下。
oracle中的sql語句書寫規(guī)范且提供了完整的函數(shù)和數(shù)據(jù)類型。oracle提供了健全的錯誤機制,用戶可以輕松的獲得錯誤位置和錯誤原因而加以修改。用戶還可以自己定義所須的錯誤類型,用以檢查邏輯錯誤。oracle中對數(shù)據(jù)類型的轉換和游標的定義也十分方便。因此,我們對代碼的書寫和維護也比sql server方便許多。
sql server使用類c語言,不易維護和查看代碼。sql server包含的數(shù)據(jù)類型太少,無法定義結構體,數(shù)組,對象。sql server無法定義流程機制,類型轉換也極不方便,sql server中對游標定義十分復雜,且當用戶定義的多個游標同時打開時系統(tǒng)卻只有一個游標變量,這是sql server中一個嚴重的缺陷。
oracle中用戶可以根據(jù)數(shù)據(jù)需要在創(chuàng)建塊時定義填充因子(空閑空間的百分比)和復用因子(當塊的存儲數(shù)據(jù)所占的空間下降到這個百分比之下時,塊才重新標記為可用)。用戶可以根據(jù)記錄變化頻率和數(shù)據(jù)量的大小設置合適的填充因子和空閑因子。
sql server只有填充因子,而它的定義與oracle剛好相反,它定義的是剩余可用空間的百分比。而sql server中沒有復用因子,當頁中數(shù)據(jù)低于填充因子,但剩余的空間已經不可能再插入新的數(shù)據(jù),但頁還是標記為可用的,當系統(tǒng)要寫入新數(shù)據(jù)都要訪問這個頁而浪費時間,這種頁稱為廢頁,將使系統(tǒng)插入新數(shù)據(jù)時浪費大量時間查找可用的頁。
oracle在創(chuàng)建表時用戶可以精確定義數(shù)據(jù)存放的表空間,甚至可以把一張表分開存放在多個表空間中,這樣可以將數(shù)據(jù)量龐大的表按某些字段分開存放,這將給查詢帶來極高的效率。
隨著信息技術的飛速發(fā)展,數(shù)據(jù)處理不僅在數(shù)量上要求越來越大,而且在質量上也要求越來越高。
操作系統(tǒng)的穩(wěn)定對數(shù)據(jù)庫來說是十分緊要的,在數(shù)據(jù)庫可操作平臺上,oracle可在所有主流平臺上運行,oracle數(shù)據(jù)庫采用開放的策略目標,它使得客戶可以選擇一種最適合他們特定需要的解決方案??蛻艨梢岳煤芏喾N第三方應用程序、工具。對開發(fā)商來說是很大的支持。而sql server卻只能在windows上運行了,這個就顯得比較單調了,但sql sever在window平臺上的表現(xiàn),和windows操作系統(tǒng)的整體結合程度,使用方便性,和microsoft開發(fā)平臺的整合性都比oracle強的很多。但windows操作系統(tǒng)的穩(wěn)定性及可靠性大家是有目共睹的,再說microsoft公司的策略目標是將客戶都鎖定到windows平臺的環(huán)境當中,只有隨著windows性能的改善,sql server才能進一步提高。從操作平臺這點上oracle是完全優(yōu)勝于sql server的了。
從資料上可以看到,oracle的安全認證獲得最高認證級別的iso標準認證,而sql server并沒有獲得什么安全認證。這方面證明了oracle的安全性是高于sql server的。
購買一個產品,首先考慮的當然是產品的性能了,當考慮性能的同時當然少不了究竟要花多少錢在這產品也是個很關鍵的問題。要建立并運行一個數(shù)據(jù)庫系統(tǒng)。不僅僅包含最初購置軟件、硬件的費用,還包含了培訓及以后維護的費用。orcale數(shù)據(jù)庫的價格是遠比sql server數(shù)據(jù)庫要高,為什么oracle數(shù)據(jù)庫比sql server數(shù)據(jù)庫價格上要高出那么多,一方面oracle的初始花費相對較高,特別是在考慮工具軟件的時候,oracle很多工具軟件需要另外購買,與microsoft提供免費的sql server工具軟件相比,oracle更顯價格的不菲。但由于sql server只能在windows下運行的原因,普遍認為sql server數(shù)據(jù)庫的可靠性是比較差的。oracle的性能優(yōu)勢體現(xiàn)在他的多用戶上,而sql server的性能優(yōu)勢在多用戶上就顯得力不從心了。
操作上sql server明顯要比orcale簡單,如果你用過java和dotnet的開發(fā)平臺,區(qū)別的基本就是oracle和sql server不同,oracle的界面基本是基于java的,大部分的工具是dos界面的,甚至sqlplus也是, sql server是跟vb一樣,全圖形界面,很少見到dos窗口。sql server中的企業(yè)管理器給用戶提供一個全圖形界面的集成管理控制臺來集中管理多個服務器。oracle也有自己的企業(yè)管理器,而且它的性能在某些方面甚至超過了sql server的企業(yè)管理器,但它安裝較為困難。
orcale數(shù)據(jù)庫和sql server數(shù)據(jù)庫那個更快?其實是一個很難答的問題,因為存在許多不定因素,包括處理類型、數(shù)據(jù)分布以及硬件基礎設施等。
sql server 2000是一個具備完全web支持的數(shù)據(jù)庫產品,提供了可擴展標記語言核心支持以及internet上和防火墻外進行查詢的能力,具有可伸縮性、靈活性、擴充性好,而且價格便宜等特點,而oracle則有著可靠安全性,速度比sql server快上百倍,但其價格在實施中卻比sql server它高出了幾百倍。
其實各行業(yè)考慮選擇那種數(shù)據(jù)庫,是由數(shù)據(jù)庫的特點以及根據(jù)自己的業(yè)務需求和基礎設施綜合考慮來決定的。