2011年3月31日 星期四

程式設計師常見藉口

下列籍口的部份看起來許多我都有講過,因為心有戚戚焉,所以轉貼在我的網站上,希望給大家參考,看你到底常說的是第幾名。

第 20 名:這很奇怪喔。
第 19 名:以前從來不會這樣啊!
第 18 名:昨天明明會動的啊!
第 17 名:怎麼可能~
第 16 名:這一定是機器的問題。
第 15 名:你到底是打了什麼才讓程式當掉的?
第 14 名:一定是你的資料有問題。
第 13 名:我已經好幾個禮拜沒碰那一段程式了。
第 12 名:你一定是用到舊版了。
第 11 名:一定是巧合!為什麼這種壞運氣只讓你碰上。
第 10 名:我不可能什麼功能都測試到吧,有 bug 是正常的!
第 9 名:這個不可能是那個的原始碼!
第 8 名:這程式應該是會動的,只是我寫好後還沒做測試。
第 7 名:可惡!一定有人改了我的程式。
第 6 名:你有檢查過你的電腦有沒有病毒嗎?
第 5 名:儘管這功能還不能動啦,你覺得他如何?
第 4 名:在你的系統不能用那一個版本的程式啦!
第 3 名:你幹嘛要那樣操作,都是你的問題。
第 2 名:程式發生問題時你在哪裡?
第 1 名:在我的機器明明就可以動啊!

Windows 密碼原則設定

           最近開始練習Windows作業系統的安裝,也將此電腦加入網域中,但由於沒有特別設定密碼的原則,所以想說來設定一下整個網域的原則設定,但是進入本機安全性原則後,卻發現都被鎖定了,也不能修改了,後來找後一下資源後,終於發現了問題點為何,原來是電腦加入網域後,原則管理會整個的提升,為了避免誤用,所以會將本機安全性原則的部份給鎖定起來,必須透過郡組原則管理來做設定即可進行原則的設定。

路徑如下:
系統管理工具 > 群組原則管理 > 樹系 > 展開網域 -> Default Domain Policy(點一下後按右鍵) > 編輯 > 原則 > Windows 設定 > 安全性設定 > 帳戶原則 > 密碼原則

2011年3月28日 星期一

Crystal Report與Reporting Service圖表種類比較

        最近接到公司工作上的分派,需要比較Reporting Service 3.0Crystal Report XII兩套產品的差異性,由於目前市場上Crystal Report的佔有率比較高,但是我個人比較偏愛Reporting Service也使用的比較久,所以強力建議公司參考使用Reporting Service,而且最主要他不需要其他額外的費用,只需購買SQL Server即可,目前我先初步進行圖表的分析比較,其實兩者在圖表上的種類非常的接近,但就我目前初步觀察,Reporting Service3D報表的部份提供非常的多,而在行列式圖(Range)、金字塔圖(Pyramid)橫條圖(Bar)都是在CR中所沒有的,而儀錶圖的種類上也比CR多很多,但是CR中有甘特圖是RS中所沒有的,這也是其中一個比較明顯的差異性。

PS:以上的訊息只是就圖表精靈上所呈現的樣式進行比較,詳細的設定與圖表的變化就暫不列入考量,如有不正確之處,在請見諒。

由於圖表種類過多,所以表格過大無法直接放置在此部落格中,所以請大家參考並下載下列的文件進行參考即可。

圖表比較參考文件:

Reporting Service Chart Type

Reporting Service Guage Type
 

2011年3月26日 星期六

SQL Server雲端解決方案 - 使用Hyper-V

        雲端服務的興起,各家粉粉推出各自的解決方案,在Linux的解決方案上有Hadoop可以選擇,使用者可以藉此自行建立自已的雲端架構,而相對的資料庫也漸漸的推出許多架構在雲端上的資料庫,如Hbase、Cassandra、HyperTable等,基本上雲端架構主要分成三大種類,分別為公有雲(Public Cloud)、私有雲(Private Cloud)和混合雲(Hybrid Cloud),但微軟在雲端解決方案上為了整合舊有資源,大略的分成二大區塊,分別是AzureHyper-V,而就微軟的Azure而言,比較類似公有雲(Public Cloud)架構,主要由於微軟提供平台讓使用者將資料庫與程式放在上面,但是就我的觀察與客戶的反應上,大家其實對Azure而言好像都暫時採保留態度,最主要大家還是怕資料外流,所以還是不願意將資料庫放置在外面,另外Hyper-V主要可以利用虛擬化的技術讓使用者自行建立私有雲(Private Cloud)架構,與VMware比較起來,感覺介面有點像遠端桌面,速度與操作都滿簡易的而且又是內建免費的,但是另一方面,Hyper-V對於硬體的支援度來說,還真是有待加強,故事詳情可以參考我的另一篇文章(Link)。

        但據微軟官方說法,他們在Hyper-V下了很多的苦心,大家可以參考下列表格,由於Hyper-V是自家的產品,所以相對的在與SQL Server的結合上就會比其他的廠商來的好,尤其是Cluster的部份,而下列的比較表也是從文件中截取出來的,提供給大家快速檢視,詳細的資訊可以參考下列的文件。


Features
Microsoft Hyper-V 
VMware
Near Native Performance
v
v
Full support for SQL Server Failover Clustering
v
 
Physical and Virtual Management for Hyper-V and VMware virtual machines
v
 
In-guest Monitoring
v
 
Lower Total Cost of Ownership (TCO)
v
 


參考文件:Hyper-V is the Best Solution for SQL Server.

2011年3月23日 星期三

SQL Server 2012(Code Name Denali) - FileTable介紹


        FileTable是一個在SQL Server 2012的全新功能,主要用來儲存非結構化的資料,可以讓檔案與目錄的架構透過FileTable放置在關聯式資料庫中。這個新的功能允許應用程式可以整合磁碟和資料管理系統並提供SQL Server services(如同全文搜索服務 - Full-Text Search)進行整合,其中包含非結構化的資料和Metadata,這是一種屬於簡單的管理和資料系統管理。

PS:根據微軟官方說法,在這介紹的部份都只是先行預覽的功能,所以實際上的功能還是會以最後的版本為主。


        大部份企業的資料都屬於非結構性,意思上代表可以經由Win32 API來進行檔案系統的管理,但是如果你的檔案資料是放在資料庫中時,因為資料庫不支援大部份的Win32 API,所以並無法有效的透過資料庫管理,所以大部份非結構化的資料通常不放置在資料庫中,經由一般的應用程式管理。

         FileTable功能上是建構在一個已存在的FILESTREAM上,透過此功能可以有效的儲存非結構化的資料在SQL Server的資料庫中,並提供應用程式進行非交易式的存取,而且可以整合系統管理與資料庫的服務並有效的使用Win32 API來管理資料與檔案。

FileTable 儲存架構

        FileTables是一個特別的使用者定義的表格,可以用來儲存FILESTREAM的資料、檔案、目錄架構資訊和檔案屬性資訊等,每個FileTable代表著一個檔案或目錄層級,而每一列則是對應到指定的目錄或檔案中。


        FileTables基本上是以Win32 API為底層並透過Windows SMB分享與SQL Server所支援的檔案與目錄管理架構,當一個應用程式在SMB中產生或修改檔案與目錄時,任何的改變將會經由SQL Server自動偵測後反應在FileTable之中。

FileTables同樣支援一般的Transact-SQL存取,可以用相同的方式進行查詢或更新的動作至其他的資料表。資料庫上所有的管理工具,如backupreplicationHADR也是相同的支援。

在FileTable中的每一列包含下列的欄位:
  • 一個FILESTREAM欄位包含串流資料(stream data)和檔案的編號(GUID). 如果FILESTREAM的欄位為NULL時,代表這是一個目錄。
  • 欄位中path_locatorparent_path_locator主要用來維護層級架構,此欄位將會秀出檔案的屬性如建立時間與修改時間等,而這些屬性會經由檔案I/O的API來處理。
  • 在Type欄位與Language欄位支援由全文檢索服務(Full-Text Search)來進行處理的動作。


        基本上Win32 API操作屬於非交易式,這代表著與一般的資料庫操作不同,可能使用Win32 API會增加檔案一致性與錯誤複原的可能性,但是FILESTREAM資料在FileTable也是完整地支援一般的交易處理。

Create FileTable語法:
CREATE TABLE DocumentStore AS FileTable WITH FileTable_Directory Document
    FILESTREAM_ON FILESTREAMGroup1;
GO

參考網址:
  1. http://msdn.microsoft.com/en-us/library/ff929068(v=sql.110).aspx
  2. http://msdn.microsoft.com/en-us/library/ff929144(v=sql.110).aspx

FileTables 欄位參考(Link):
File attribute name
type
Size
Default
path_locator
hierarchyid
variable
A hierarchyid value that is a child of this FileNamespace
stream_id
[uniqueidentifier] rowguidcol
 
A value returned by the NEWID() function.
file_stream
varbinary(max) filestream
variable
NULL
file_type
nvarchar(255)
variable
A file system create or rename operation will populate the file extension value from the name.
Name
nvarchar(255)
variable
GUID value.
parent_path_locator
hierarchyid
variable
A hierarchyid value that corresponds to the root of this FileNamespace.
cached_file_size
Bigint
 
 
creation_time
datetime2
8 bytes
CurrentTime
last_write_time
datetime2
8 bytes
CurrentTime
last_access_time
datetime2
8 bytes
CurrentTime
is_directory
bit
1 byte
FALSE
is_offline
bit
1 byte
FALSE
is_hidden
bit
1 byte
FALSE
is_readonly
bit
1 byte
FALSE
is_archive
bit
1 byte
FALSE
is_system
bit
1 byte
FALSE
is_temporary
bit
1 byte
FALSE

2011年3月22日 星期二

Visual Studio 2010 SP1 - 開放下載

        微軟於2011 3/8的時候,推出了Visual Studio 2010的第一版更新(Service Pack 1),其實更新的符度滿大的,其中Visual Studio 2010 SP1提供更好的幫助支持、IntelliTrace 64位支持、SharePoint等用戶需求的功能。在平臺支持方面,Visual Studio 2010 SP1新增對Silverlight 4的支持,並增加不少Windows 7專用MFC API。當然,Visual Studio 2010 SP1還有很多改進,如支持.NET 3.5下單元測試等。

以下直接轉貼官方發布的訊息:

SP 1 已提供MSDN 訂閱者下載 (包括 VS 2010 各版本、TFS 2010、Team Explorer Everywhere 2010),公開下載將於 3/10上線。 主要加強功能如下:

  • Help Viewer – 這個讚! 新的可安裝於本機應用程式,支援Keyword 檢索及TOC (table of contents) 可展開,詳可讀Jeff Braaten’s post here (這是VS 2010 去年上市後,最多人反應需加強的,快安裝)
  •  IDE、測試及偵錯的改善
  • 智慧偵錯 - IntelliTrace 支援按F5快速鍵 for 64-bit 應用程式支援及 SharePoint 專案支援 (這個讚! 快試試IntelliTrace,節省偵錯時間)
  • Unit Testing 也支援 .NET 3.5
  • Performance Wizard for Silverlight (Silverlight 效能精靈, Silverlight 專案已內建在 Wizard中)
  • 開發技術及平台支援
  • Silverlight 4 Tools for Visual Studio 2010 內建
  • Windows 7-specific Microsoft Foundation Class (MFC) APIs 支援使用 Direct2D, DirectWrite, 及 Windows Animation 技術
  • VB Compiler runtime switch - This switch will enable Visual Basic developers to target their applications and libraries at platforms where the full Visual Basic Runtime hasn’t traditionally been available
另有 Visual Studio 2010 Feature Packs (擴充 Visual Studio 2010的功能,僅提供 MSDN 訂閱者下載),提供給MSDN訂閱者額外權益,包括兩個最新 Feature Pack以加強 VS 2010功能,包括:
  • Visual Studio 2010 Load Test Feature Pack
    這個讚! 只要購買 VS 2010 Ultimate with MSDN 的使用者,皆可免費下載取得「模擬無限人數的壓力測試」(之前需額外購買 Load Test Virtual User Pack; 而許多銀行/公部門/大型網站業者以往也需花費鉅額購買 “HP/Mercury Load Runner”,現在 VS 2010 Ultimate with MSDN 讓你用低成本也能執行大型的壓力測試,不論Web應用程式是以何種開發技術或語言所建置亦都支援) (詳細 Load Test Feature Pack FAQ )
  • 壓力測試學習資源
    1. Visual Studio 2010 Ultimate 的應用–效能及壓力測試的簡介投影片範例及操作影片下載 (中文)
    2. 完整的學習影片:http://msdn.microsoft.com/zh-tw/vstudio/ff842425.aspx
  • Team Foundation Server Project Server Integration Feature Pack
    TFS & Project Server的整合,以往需透過 Codeplex 的 3rd party 元件達到此需求,現在由微軟釋出此套件,讓 TFS & Project Server 的工作項目能同步。(技術文件:MSDN Product documentation ; 白皮書 - Reconciling the Agile Team with Enterprise Project Management PDF - XPS ; Project and Work Management with Project Server 2010 and Team Foundation Server 2010: PDFXPS)
參考網址:http://download.microsoft.com/download/3/0/8/308E9B42-8488-4809-9E6D-0D9D56F0DE06/VS2010SP1_zh-TW.htm#Related
下載網址:http://www.microsoft.com/downloads/en/details.aspx?FamilyID=75568aa6-8107-475d-948a-ef22627e57a5&displaylang=en

2011年3月19日 星期六

個人資料保護法與資料庫稽核以SQL Server為例

        由於個人資料保護法已經通過,所以許多企業已經開始應該措施開始進行處理,但是仍然還是有許多客戶反應慢半拍,其實許多個資的問題的大部份皆由企業內部所造成,而資料與資料庫的稽核追蹤就更顯的重要,而SQL Server以往有C2的功能可以使用,但是啟用後資源耗損過多,所以大部份我都會建議客戶透過Profiler來進行錄製,而在SQL Server 2008之後又加入了資料庫稽核的功能,那整個流程又更加的完備,而且處理效能與儲存空間上都有很好的表現。

        但是大部份設定稽核(Audit)機制的皆為DBA系統管理者(Administrator、Root),這些群組的人權則都非常的大,可能在取得利用這些資訊後,就把紀錄給銷毀掉,所以在方案上感覺還是不夠完整,但其實個人認為問題其實不難,不需真的這樣就放棄了這些功能,而又花一筆錢去買一套系統軟體管理並進行稽核,基本上SQL Server都可以做的很好,如果真的怕有心人士銷毀資料,可以利用權限控管的方式加以運作並把紀錄予以隔離,相信一定可以為客戶達到把關的動作,也讓企業不用再擔心個人資料保護法對公司的影響。



SQL Server 2008 資料庫稽核介紹http://msdn.microsoft.com/zh-tw/library/cc280386.aspx
原廠個人資料保護法介紹http://www.microsoft.com/taiwan/security/privacy/checklist.htm

2011年3月17日 星期四

SQL Server 2012(Code Name Denali) - 以列為主的新儲存方式(雲端儲存架構)

       以往SQL Server的資料庫在儲存資料時,是以叢集索引的方式排序並儲存在硬碟上,基本上都是以行的方式進行,然後取出時再透過Block的方式進行處理,但是在許多的資料表上,如果欄位的數量非常的多,取出時的效率都不是很好,而雲端運算(Cloud Computing)的興起,許多的雲端資料庫也粉粉的推出,如HBase、Cassandra、HyperTable等,而這些資料庫最大的差別就是在儲存方式上皆是以列為主的方式進行儲存(如下圖所示),而為了趕上這個潮流,所以微軟也在SQL Server 2011(Denali)的時候加入了這個新功能,



       經過測試,當使用的資料規模超過1TB,資料筆數為十四億四千萬時,微軟聲稱以列的方式儲存時,在查詢上CPU的時間上會有16倍的提升,而在使用時間上會有 455倍的提升。在真實情況下這意味著本來要耗費501秒的查詢,現在只需要1.1秒就可以完成了,而這項測試的環境為32個邏輯處理器和256GB記憶體的計算機上執行。

       微軟把每個列都隔離在自身的一組頁中,進而達到了這種驚人的改善。當執行查詢的時候,只會以磁碟載入位於列中的資料。而包含其他列的頁面則會被忽略,進而節省處理時間。這種方法相當於為每種我們所能想像到的列組合創建替代索引。然而,這種方式不會消耗大量的磁碟空間,它實際上會比傳統的資料表占用更小的空間。由於SQL Server的壓縮會發生在頁級別上,並且和行相比,列中的數據更容易重覆,所以使用列儲存索引的資料表將會有更高的壓縮等級。

        基本上還是先暫時不建議大家使用這列儲存的這個新功能,因為目前此功能屬於唯讀式且不可更新,一但建立了列儲存的索引功能時,那麼就不允許在表格上執行插入、更新或是刪除等操作了。微軟建議可以透過定期更新的方式來批次處理,然後再重新建立索引。但是這個操作非常的耗費資源,所以我們可以使用垂直分割來把操作限制到邏輯表的子集合的範圍內。

參考資料來源:
http://www.infoq.com/news/2011/03/Columnstore-index

備註:在推出Denali之前,微軟代號為Apollo的項目就已經將列存儲索引功能添加到PowerPivot之中,並嵌入了數據庫引擎之中。微軟提供的列存儲索引技術是基於一個叫做VertiPaq的數據庫架構的,它同傳統的索引相比能夠為數據庫提供較大程度上的性能提升。


其他相關網址:
  1. SQL Server 2012 Code Name(Denali) 新功能介紹與預覽
  2. SQL Server 2012(Code Name Denali) - 新T-SQL語法介紹 – 分頁功能
  3. SQL Server 2012(Code Name Denali) - 新T-SQL語法介紹 – Sequence
  4. SQL Server 2012(Code Name Denali) - 新T-SQL語法介紹 – Code Snippet Manager
  5. SQL Server 2012(Code Name Denali) - 以列為主的新儲存方式(雲端儲存架構)
  6. SQL Server 2012(Code Name Denali) - FileTable介紹
  7. 微軟介紹雲端平台就緒的資訊 - TechEd 2011
  8. SQL Server 2012 (Code Name Denali) - HA 新功能 - AlwaysOn
  9. SQL Server 2012 (Code Name Denali) - AlwaysOn 安裝與設定教學

2011年3月15日 星期二

微軟大師認證 - Microsoft Certified Master for SQL Server - Update

         根據上一篇對於 SQL Server 認證大師(Microsoft Certified Master)的考照介紹,我又收到最新消息,在此提供給大家並更新一下訊息,過去要取得微軟SQL Server認證大師的執照,必須先受訓三周,而且要到微軟總部應試,現在微軟則不再要求必須先行受訓,並開放9個國家的認證中心代考,同時把4個考試項目減少至2個,現在若只計算兩項考試費用則只需要2500美元,我想這樣應該可以減少大家的負擔,也讓大家可以更方便的接受這個挑戰,也希望大家可以踴躍的挑戰看看。

2011年3月13日 星期日

微軟大師認證 - Microsoft Certified Master for SQL Server

        在Oracle的考試認證中,有分成三個等級,到最後的OCM(Oracle Certified Master),但是從微軟的認證中,只有二級,一直以來缺乏最高階的大師級(Master),但是在之前微軟終於也推出大師級(Master)的認證,稱為MCM(Microsoft Certified Master ),雖然知道的人很少,但是知道後還是非常的高興的了解一下,想不到真的是貴死人了,而且目前亞洲地區還沒有考場,而整個計畫的費用大約也要60~80萬左右,我想如果不是公司補助的話,這個自費的認證還真的是很難負擔的起吧。

目前大師級的認證分成五種不同的認域,申請的辦法與費用都是相同的。
  1. Microsoft Certified Master: Microsoft Exchange Server 2007
  2. Microsoft Certified Master: Microsoft SQL Server 2008
  3. Microsoft Certified Master: Windows Server 2008: Directory
  4. Microsoft Certified Master: Microsoft Office SharePoint Server 2007
  5. Microsoft Certified Master: Microsoft Office Communications Server 2007
         想當然有考過MCITP(Microsoft Certified IT Professional)的人應該相當的多(沒考過也是可以參考),但是畢竟 MCM(Microsoft Certified Master )是另外一個層次的考試,所以我另外找到一個專門提供MCM(Microsoft Certified Master )的線上訓練網址,讓大家可以盡早準備。

認證標章:

 

  價格結構
計劃申請費 (不得退費):$125 美元
計劃費: $18,500 美元
重考非實驗室考試: $250 美元
重考實驗室考試: $1,500 美元

 
微軟參考網址:
http://www.microsoft.com/taiwan/learning/mcp/master/sql/default.mspx
http://www.microsoft.com/taiwan/learning/mcp/master/register/default.mspx

SQLskills Free Online MCM Training:http://www.sqlskills.com/T_MCMVideos.asp

部落格文章(Blog)在Google與Yahoo搜尋引擎中,搜尋結果的差異!!

        由於之前一直有在提供SEO的服務給客戶,所以在開始寫網誌後,就會不定時候關心自已網誌的情況,但奇怪的事,我用Google搜尋我的網誌都可以找到,但是透過Yahoo搜尋時,卻一個也找不到,想說該不會自已的網誌被封鎖了吧,於是上網確定了一下後,竟然發現了一篇文章的說明,了解後差一點讓我昏了頭,原來真的是內有文章。

         大家可以參考下列的網址,裡面內容很多,但是主要是我下列截取的兩段,原來是Yahoo更新他們的搜尋引擎時,為了可以更 "準確" 的搜尋到使用者所需的資源,所以會先以他自家的無名為主,而其他的網誌空間的文章就不一定能上(我的文章是完全沒有),也曾經有部落客向他們反應,但是結果看起來還是沒有什麼變化,我們也能靜觀其變Yahoo的變化了。

Previously I thought that Yahoo!USA's “YST” technology is to find information faster and more precisely, however, it seems like Yahoo!Kimo is trying to prevent their users to find more blogs and more video clips. Are there more clips in Wretch Video than Youtube? Can it cover the whole world's video? Once more and more users are aware of the fact that they can't find what he wants with Yahoo!Kimo, they will turn away quickly and decide to use other search engines.


 After my interview with directors of Yahoo!Kimo Search and Engineer department, they told me that the reason they don't search comprehensively is due to limited corporate resources, so they decide to present new functions first and then step by step increase search resources. They also believe that Wretch Blog and Yahoo Blog represent most blogs in Taiwan, so the search result can already meet the need of most users. What do you think about their feedback?

參考網址:
http://globalvoicesonline.org/2008/07/20/taiwan-comments-on-yahoo-taiwans-search-blockage/

2011年3月11日 星期五

重大服務改變 - SQL Server 2000與SQL Server 2005(SQL Server Support Information)

       微軟於2011/3/9的時候公佈了針對SQL Server 2000與2005服務的重大更新,大致上微軟是以10年為一個服務計畫,每5年就轉換一次服務等級,現在目前針對兩個產品的服務等級也提示如果還沒有昇級的,請大家盡早計畫相關措施。

SQL Server 2000:預計從2013/4/9的時候,將從目前的Extended Support變成完全不支援,當然了這個也出這麼久了,也該退役了吧,但是我有一些公家機關的客戶還在使用中,可能要提醒一下他們了吧。

SQL Server 2005:預從2011/4/12 從原本的Mainstream Support轉換成Extended Support,中間差異性可以參考下列的圖表,其實主要在於Service Pack的推出停止。


微軟服務等級列表:


        當然微軟也不是都不理大家啦,也是有提出一些方案給大家參考,下列是他們的建議:

SQL Server 2000:
  1. 更新你的SQL Server 到新的版本。
  2. 透過微軟的CSA服務(Custom Support Agreement)。
  3. 透過線上支援自已找尋解決的答案。
  4. 尋求大師解決(這是我自已加的)
SQL Server 2005
  1. 這個問題就比較沒有這麼的大,你還是可以透過Extended Support來解決你的問題,但是如果你有需要額外的Hotfix可能就要付費了。
Microsoft Support Lifecycle Policy FAQ :http://support.microsoft.com/gp/lifepolicy
版本更新參考:

2011年3月10日 星期四

SQL Server 負載平衡架構介紹(Load Balancing)

        最近常常遇到有人問我,到底SQL Server負載平衡(Load Balancing)要怎麼做,Cluster架好後為什麼另一台電腦都不能接收服務,我想在這一起問答給大家好了,也介紹一下我目前的作法給大家。首先我要強調一下,Cluster本身稱為容錯移轉叢集(Failover Cluster),所以只有支援(Failover),沒有支援Load Balancing (這個最多人問@_@)所以你會看到另外一台只能在那等著,不能進行服務,那到底Microsoft有沒有計劃推出這類所謂真的叢集架構(Real Cluster)呢,據我自已的推測與Microsoft的說法,因為Windows本身的架構設計,所以目前暫無計劃推出像Oracle的RAC機制,所以我想在SQL Server近期的二版本推出時,應該也不會包含,至少在SQL Server 2012(Denali)就暫時沒有,但就我目前服務客戶的情況下,其實大部份的效能瓶頸都是在I/O的部份,所以我想就算轉換到Oracle的RAC架構,好像也沒有太大的效果,當然詳細的說明大家還是可以參考下列的網址就會更清楚了。

Why SQL Server May Be More Suitable for You than Oracle RAC

Oracle RAC架構圖:


SQL Server負載平衡(Load Balancing)作法:目前在SQL Server上有三種作法可以達到負載平衡(Load Balancing),我們就逐一的介紹:
  1. Replication (複寫)
  2. Log Shipping (日記檔傳送)
  3. Database Mirroring (鏡射)
1、Replication(複寫):我想這個功能是我認為目前最佳的負載平衡(Load Balancing)方案,在 Replication 中主要有三種方法,分別是,SnapshotTransactionalMerge,基本上可以使用MergeTransactional,因為Snapshot同步化資料時不會比對差異或是否有資料異動,所以不適合,而Merge是一個不錯的選擇方案,而且可以自動比對處理同步衝突,但因為資料比對時間過久,而且衝突排除有時候會失敗需手動排除,所以個人最推薦使用Transactional

        Transactional Replication主要設定架構上有兩種,第一種是一台讀寫資料庫,其他台為唯讀,另一種為多台資料庫可同時讀寫,架構的選擇上主要看你的程式架構而定,假設你的資料庫中Primary Key使用了大量的流水號(IDENTITY)又同時使用在有MasterDetailed的表格時,就只能使用第一種架構,因為當資料庫將資料同步到另一台電腦時,因為流水號的重取,會造成另一台資料庫中的流水號不同步,所以使用第一種架構把InsertUpdateDelete移到第一台然後再同步到其他台,就可以完成而不需修改太多的程式,而程式只要調整將Select的部份指定到其他台即可達到負載平衡(Load Balancing),而在第二種的架構上可以使用SQL Server 2005 推出的新架構 Peer-to-Peer Transactional Replication即可達成,而且效能與同步化的時間差絕對讓你滿意,此二種架構的同步時間也是目前所有架構中,同步時間最短的,只需約1~3秒(實際情況示網路架構與資料量而定,但保證是所有架構中最快的一種)內即可完資料的同步。

Peer-to-Peer Transactional Replication架構圖:





參考文章:SQL Server 分散式架構 - 點對點交易式複寫 + NLB

2、Log Shipping (日記檔傳送):這是三個方案之中最便宜也是最簡單的方案,這個主要將第一台的紀錄檔(Log) 傳送到另外一台,而另外一台可以提供唯讀(Standby)的方式讓使用者進行存取,而同步時間因為是透過SQL Agent的排程進行,所以可以設定在一分鐘以內,而這個方案也是我目前遇到的客戶中最多人使用的方案。

Log Shipping 架構圖:



參考文章:如何建立 Log Shipping

3、Database Mirroring (鏡射):這是一個在SQL Server 2005推出的新功能,推出的時候真的有讓我非常的驚艷,很多人可能會想說我會不會寫錯了,Database Mirroring 的架構是屬於ActivePassive二種,那到底該如何進行負載平衡(Load Balancing)呢,這個就要透過資料庫快照(Database Snapshot),透過這個方法就可以將硬體發揮到極限,才不會白白的浪費硬體,但是有一個非常大的問題需要解決,那就是當你要重作快照的時候,需要中斷使用者的需求,所以會有停止服務的時間差產生,這個問題想當然也是有方法可解,那就是透過二個資料庫快照進行切換,假設我已每10分鐘重作一次,10:00的時候使用第一個快照,10:10的時候使用第二個,這時候第一個就可以準備開始重作快照,等到約10:19分的時候就可以開始重作快照,然後再切換回第一個,以此類推,即可達到負載平衡(Load Balancing)。

參考文章:SQL Server - 如何建立 Database Mirroring

Database Mirroring 架構圖:




        最後上面的三個架構並沒有一定的好與壞,主要還是視客戶的需求而定,大家可以嘗試評估看看自已的需求,再選擇最合適的架構即可。


相關文章:
  1. SQL Server 2008 R2 容錯移轉叢集環境架設 - 利用 VM 與 Windows Storage Server - Part I
  2. SQL Server 2008 R2 容錯移轉叢集環境架設 - 利用 VM 與 Windows Storage Server - Part II
  3. SQL Server 2008 R2 容錯移轉叢集環境架設 - 利用 VM 與 Windows Storage Server - Part III(終)
  4. SQL Server - 雙主動模式叢集環境架設
  5. SQL Server - 如何建立 Database Mirroring
  6. 如何建立 Log Shipping
  7. SQL Server 分散式架構 - 點對點交易式複寫 + NLB


關鍵字:Load BalancingDatabase MirroringReplicationLog Shipping

2011年3月9日 星期三

SQL Server IO 測試工具 - SQLIO的使用與不同Block Size下的效能測試

備註:修改日期 2016/01/07 
由於SQLIO已不支援,所以建議可以參考使用DiskSpd,並請參考我的另一篇文章。 
Windows上不同Block Size的效能測試 - 以AWS EC2為例 

資料庫是一種使用I/O非常頻繁的軟體,所以硬碟就相對的非常的重要,當然SQL Server也不例外,但是我們買來的硬體雖然都有廠商或公開的測試值,但是如果硬體配備或環境不是完全相同時,該如何進行模擬測試呢,在我的上一篇 [SQL Server 儲存設備 (Storage) 最佳調整作業] – [Storage Top 10 Best Practices],在文章中有介紹二個工具可以完成,所以本篇我們介紹一個由原廠(Microsoft)推出的一個模擬SQL Server I/O動作的軟體SQLIO

        在使用前我先來介紹一下使用的方法,首先開啟一個DOS視窗後,然後切換目錄到Program Files/SQLIO下,輸入SQLIO -h 先看一下說明的部份,我將幾個常用參數整理如下:

常用參數介紹:
參數
說明
-k<R|W>
設定測試項目為讀取(R)或寫入(W)
-s
設定測試執行的時間
-d
設定同時運作的磁碟有那些
-o
指定I/O執行需求的深度
-b
指定I/OBlock Size
-F
讀入參數檔案
-f
I/O讀寫的方式(Random or Sequential)
-t
執行緒的數量

        介紹完參數的介紹後,我們介紹一下使用的方法,在這邊我們利用一個範列介紹一下,在資料庫中我們的磁碟機格式化時,通常都使用預設值,但是在理論上如果Block Size切的越大時,其實是可以提高傳輸的速度與節省I/O的傳輸次數,所以我利用SQLIO的工具來比較一下其不同Block Size下的效能比較:

執行語法:c:\Program Files\SQLIO> SQLIO -kW -t4 -s120 -o8 -frandom -b64 -Fparam.txt
語法上只要修上列紅色字體的部份即可得到下圖的數據,建議時間的設定上不要太少,以免測試的數據不太穩定。

每秒I/O次數比:

每數傳輸率(MB)比:

        在Windows的架構中Block Size可以設定如下表的部份,從以上的數據看來,的確透過Block Size的改變可以提高每秒的傳輸量與降低傳輸次數提高硬碟的壽命,但是天下沒有白吃的午餐,將Block Size設定到這麼大有什麼缺點呢,最大的缺點就是你設定Block Size成64K,如果你的檔案只有1k時,檔案還是佔64k,這也稱為內部斷裂,類似的檔案越多時,就越浪費空間,但是如果你是大型檔案,如DVD等檔案時,你就會發現檔案的讀寫會變快,我想在現在硬碟越來越大也越來越便宜的情況下,我想這應不是什麼大問題吧。

Windows - Block Size:
FAT32
NTFS
4K
512(Byte)
8K(Default)
1K
16K
2K
32K
4K(Default)
64K
8k
x
16K
x
32K
x
64K

SQLIO - 檔案下載位址:http://www.microsoft.com/downloads/en/details.aspx?familyid=9a8b005b-84e4-4f24-8d65-cb53442d9e19&displaylang=en

當然也可以另外透過微軟提供的效能監視器來觀察,我選出幾個比較重要的重點來說明:
物件類型
子物件
說明
Processor
Processor Time
[% Processor Time] 是處理器用在執行非閒置執行緒的經過時間百分比。這是測量處理器用在執行閒置執行緒的時間百分比,然後以 100% 減去該值所得。(每個處理器都有一個閒置執行緒,當沒有其他執行緒準備執行時,就會耗用週期。) 此計數器是處理器活動的主要指示,並會顯示抽樣間隔期間所觀察之忙碌時間的平均百分比。請注意,處理器是否閒置的帳戶處理計算,是以系統時鐘 (10ms) 的內部抽樣間隔來執行的。因此,在當今的快速處理器上,% Processor Time 可能會低估處理器使用率,因為處理器可能會花很多時間服務系統時鐘抽樣間隔之間的執行緒。以工作量為依據的計時器應用程式,就是其中一種較可能測量不準確的應用程式,因為計時器是在取樣之後收到訊號。
PhyicalDisk
% Disk Read Time
% Disk Write Time
[% Disk Read Time] 是選取的磁碟機進行讀取操作/寫入服務所花費時間的百分比。
Avg. Disk Bytes/Read
Avg. Disk Bytes/Write
[Avg. Disk Bytes/Read] 是磁碟上的位元組在讀取/寫入過程中的平均轉移速率。
Avg. Disk Queue Length
[Avg. Disk Queue Length] 是取樣時間內在所選取的磁碟佇列中的讀寫要求平均數目。