希格工作室

2011年9月19日 星期一

SQL SERVER手記 --- SPARSE



USE [tempdb] 
create table tst1 (ss varchar(20) SPARSE,ss1 varchar(20) SPARSE)
CREATE TABLE tst2 (ss varchar(20)       ,ss1 varchar(20) )
go

--select * from tst1 SPARSE 
--go

declare @idx int = 0
while @idx < 100000
begin
insert tst1 values('',null) 
insert tst2 values('',null)
set @idx +=1
end
go

sp_spaceused tst1
go

sp_spaceused tst2
go

drop table tst1,tst2
go



測試輸入10萬筆資料,每筆資料有兩個欄位,長度都為20

有/無(SPARSE)保留區資料區索引區未使用
CHAR都有值6408640080
51285096824
VARCHAR都有值23122288816
1160114488
CHAR都NULL1160114488
51285096824
VARCHAR都NULL1160114488
1160114488
CHAR一邊NULL39763944824
一邊有值51285096824
VARCHAR一邊1928187288
NULL一邊有值1160114488

*有值的部份是填入空白值,而非填滿,故在CHAR時是補滿,而VARCHAR時理應空白。
*欄位裡上面為有使用SPARSE的TABLE,下面為沒使用的TABLE。

在這裡看到,當都是使用CHAR時,若資料欄位都有儲存資料且非有NULL時,所使用的空間會變多,在VARCHAR時亦同,而當CHAR都是NULL時,可以發現佔用的空間明顯變少了,但在VARCHAR時則相等,所以可以發現在VARCHAR為NULL時,有無使用SPARSE似乎都沒有意義,在一邊有值一邊為NULL的情況下,可以發現CHAR的確有省到空間,但是VARCHAR依舊是佔用較多空間。

故使用SPARSE時,由於SPARSE的特性是,若欄位為NULL時將不佔任何空間(不替它保留),但在有資料時則額外佔用空間(聽說是4byte),所以在使用變動欄位(如VARCHAR),除了不會省到任何空間以外,反而可能會膨賬,但在固定欄位時則相反。

2011年9月14日 星期三

Tech Days 2011 手記(第二日-- SQL 第二屆SQL Hero選拔大賽)

這場次是今日最後一個場次
這個場次玩到晚上九點,真晚...

一開始的演講,我完全沒記錄,說真的壓根忘了講過什麼,因為我相信...有些人要的是獎品吧?

重頭戲是參加四選一的選擇題大賽,題目內容當然都是跟SQL有關的,而且非常細節。

第一關是21題,但第一題不計分,20題我答對15題。

這類遊戲有一個重點,就是要相信你自己...不然就是完全不要相信你自己

一開始明明認為是對的,結果一群往別處走,自己定力不夠跟著走,所以錯了(大概兩題吧)

不過還是幸運進到第二關

第二關開始真的變很難,一堆都是我這資淺的沒啥看過的東西,結果就被刷下來了,好像是15題只對5題

到後面看戲,一整串語法要在短時間回答,真的佩服那幾位能夠答對。

幸運的是,我還抽到個8GB隨身碟當安慰獎

























WITH n(c) AS (SELECT c FROM
(VALUES('0:1:0'),('0:2:0'),('0:3:0')) t(c))
select COUNT(*) FROM n
GROUP BY
DATEADD(MINUTE,DATEDIFF(MINUTE,0,c)/5*5,0)
執行結果為?

你能在不到10~20秒內回答嗎?

Tech Days 2011 手記(第二日-- VIR305建置私有雲的第一步)

私有雲
 可以動態無限擴展
  自動化資源管理
  加速上線時間
  確保商轉
  災復

企業的私有雲
 跨平台
 智能配置
 自動化監控
 環保

必要架構:AD,部屬方案(快速),實體機器與虛擬機器、共用儲存裝置
 部屬方案要,重復安裝、災復
Use
 DVD
 Microsoft Deployment Toolkit
 System Center Configuration Manger

 利用共用儲存裝置達到VM機器轉移而不打斷使用者 live

Cluster Shared Volumes 叢集共用磁碟區
移轉:先建立節點、CONFIG設定、再將記憶體內容複制、Memory Sync、最後進行USER對像轉移

Better of Hyper-V Manager : System Center VM Manager  2008 R2
可管理其它平台VM
快速移轉


如果要用到Operations Manager當時在裝SCVMM R2時就不要選到SQL Express,要用正式版的SQL,否則要改regedit
//VVMMService/DependOnService : ChangeIt sqlName
//Microsoft System Center Virual Machine Manger Service /Setting/Sql/ConntentString : ChangeIt & sqlName
And ReStart Service
Then reattach to new instant

利用範本新增VM

星級評分技術
 協助最佳硬體分配

移轉時也要注意CPU相容性選項

透過PowerShell Management Library for Hyper-V
做大量或其它重復活動的管理

自助入口網站,可以FOR使用者自行建置,讓管理者專注管理層面,進行委派。

監控

System Center Essentials 2010
System Center Operations Manager 2007 R2 跨平台集中管理