![]() |
| 往紀念館的步道 |
2011年8月8日 星期一
雨後天晴一滴水
2011年6月23日 星期四
腳架採購心得
買單眼腳架這是第三組了, 之前用過
Velbon 443Q(QHD-51Q)--腳架很粗勇, 但雲台不夠力, 架上Pentax K-m+50-200直拍就會慢慢垂頭 Orz
後來就換成Slik sprint pro ez, 單桿多向式雲台, 雲台滿夠力的, 但畢竟是三向雲台的基礎, 微調角度很不容易, 用了一年左右再試用其他攝友的腳架, 終於忍不住還是將他脫手了
網路爬了些文章, 雲台要好用看來還是得單買, 這次鎖定目標是球型雲台, 考慮的對象有
Velbon QHD-62Q--大size的快拆板跟防自轉設計, 重量又輕, 可惜沒阻尼設計,質感也遜色了點, 剛好碰到dcview有一隻不錯的二手品就買了!
Manfrotto 496RC2--有可調阻尼, 手感/質感都是一流, 價錢稍貴一點, 因為看01的網友分享還是QHD-62Q比較穩!
Benro, Jusino等大陸製品, 看一些分享似乎品管不佳, 有人覺得不錯有人拿到爛貨...
腳架可選的就比較少, 一開始想選反折腳架, 但幾乎價錢都是一般型的兩倍, 感覺不大划算, 我腳架一年出動不到5次吧!
查了一下網拍Velbon 443Q有單賣腳架R4A/R5A系列, 滿不錯的, 價位約2000/2500, 但Velbon那個腳架袋薄的跟紙一樣...
爬文的過程意外發現Benro A300ex這隻, 三節設計腳管頗粗, 質感也不錯, 有水平儀, 掛勾, 海綿套等等, 背袋更是耐用許多, 而且網拍價竟然不到$1500, 反正少用就選這隻囉
今天收到貨,腳管的質感真的不錯, 摸起來有點像碳腳耶! 不過只能收三節真的是滿長的, 加上雲台有60公分左右, 出國恐怕連行李箱都塞不下, 而且發現QHD-62Q的雲台太大, 跟腳架組合後就放不進去袋子, 得拆開來放不大方便。
這個組合穩定度跟重量都還不錯, 價錢也算滿便宜的($3k多), 缺點是總高度只有150多公分, 收長又長達60公分, 且無法直接放進袋子, 希望能用的順手囉...
2010年3月23日 星期二
da15
2010年1月17日 星期日
2009年2月9日 星期一
MySQL5
另外MySQL的字符集,使用utf8_bin collation才能區分大小寫。
在windows環境使用mysql CLI,是使用950(ANSI-Big5)編碼,因此無法正確顯示中文,安裝Navicat等mysql gui工具即可解決。
指令show variables like 'char%'可以顯示編碼相關的變數
2009年2月8日 星期日
Canon G7
自訂色彩中有三項,中英文比對
1.對比度 -> Contrast
2.鮮明度 -> Sharpness (<-所以 想調整銳利度,就是這一項~)
3.色彩飽和度 -> Saturation
剩下可調的部份則是 R,G,B,skin tone(膚色,這個不錯用!)
推測G9的最佳光圈應該是在F4-F5.6間。根據Bob的測試,G9最佳的光圈值是F5.6。
個人的實際使用經驗。我認為F4.5最適合,一方面是光圈值夠大,一方面是畫面很銳利。F4.5配合機身的最高銳利值設定,後製時幾乎不必再管銳利化的問題。
G9的MTF http://www.diwa-labs.com/photoalbum/view/?size=org&id=237638
F8平均起來有比較差一點但大致上任何焦段任何光圈都很銳利
若根據DIWA Labs的測試,G9最佳光圈值應該是F4。
2008年12月31日 星期三
[Oracle] 使用rownum選擇列
Oracle在使用rownum select資料時
select rownum from orderTable where rownum between 100 and 200 ;
不會有資料出現,因為rownum 在select出結果的時候才會產生,有點像增加一個臨時的欄位,從1開始; between 100 and 200還沒有結果,所以不會出現資料!!
可以用下面的方法解決:
select * from orderTable where rownum <=200 minus (select * from orderTable where rownum <=100);
或是使用ROW_NUMBER函數
SELECT NO, NAME FROM (
SELECT NO, NAME, ROW_NUMBER() OVER (ORDER BY NO) RNUM
FROM ROWNUM_TEST ) WHERE RNUM BETWEEN 5 AND 10
2008年12月26日 星期五
如何使用獨立磁帶媒體櫃排定自動備份的時程
轉貼微軟msdn
http://support.microsoft.com/default.aspx?scid=kb;zh-tw;239892
「Windows 2000 備份」(Ntbackup.exe) 設計來與「卸除式存放裝置管理員」(RSM) 搭配使用,以便在備份時管理媒體。
這在磁帶媒體櫃中存有一些磁帶時特別好用,因為在排定的備份程式呼叫磁帶時,RSM 可以自動掛載或卸載磁帶。
如此使得不用人力介入的自動備份得以實現,因為 RSM 會依據您所選取的備份選項載入正確的磁帶,然後覆寫原先的內容或者附加到原先的內容後面。
如果您有一部獨立的磁帶媒體櫃 (需要手動載入/卸載媒體),只要欲備份的磁碟內容可以容納到一卷磁帶之內,便可以排定在夜間進行自動備份。您有兩種方法可以選擇:
• 受管理的方法
當您想管理媒體時可使用此法。此種方法可以確保磁帶在被覆寫前,磁帶機內已放入適當的磁帶。建議您使用此法。
• 不受管理的方法
此種方法只會以目前的備份工作覆寫目前位於獨立磁帶機中的磁帶。此法較易實作,但若啟動排定的備份之前磁帶機中未放入適當的磁帶,重要的資料就可能被覆寫。若您與不同的程式共用一部獨立磁帶機,則不建議您使用此法。
受管理的方法
若要使用此方法,請將磁帶標上標籤 (一週內的每個工作天各一卷),然後排定每天備份,以一週為一輪。
唯一需要的人力介入,是確保前一晚的備份磁帶已經退出,並將次一晚的磁帶插入獨立磁帶媒體櫃內。任何一個非工程背景的助理人員均可從事這項工作,只要在下次排定的備份時間之前執行此手動作業即可。
下一節簡介了準備磁帶與貼標籤的基本概念及步驟,並說明如何排定 Ntbackup 來使用磁帶。
此處的範例經過簡化,說明了在每晚 (週一至週五) 執行正常備份,每次均覆寫原先的磁帶。
或許您會想在週一至週五執行增量備份,然後在週末以另外一組磁帶執行完整備份。磁帶必須先位於 RSM 匯入、可用 (free) 或備份等媒體集區, Ntbackup 才能使用該磁帶。
匯入媒體是可被 RSM 辨識為與已安裝程式 (如 Ntbackup) 相容,但尚未分類及移至該程式的媒體集區之媒體。若 Ntbackup 在匯入媒體集區中偵測出它所認得的媒體,您會收到一個詢問是否要匯入該媒體的訊息。
此媒體匯入以後,您就可以用它來執行還原或者製作新的備份。
可用媒體是 RSM 準備給任何程式使用的媒體,其中寫入了一個「可用媒體」標籤。當您首次使用某一卷磁帶時,程式會從可用媒體集區中取出該磁帶,再將它配置到該程式的媒體集區內,以供將來的工作使用。
準備磁帶
請使用下列步驟,準備 Ntbackup 所使用的每一卷磁帶。 注意 :此作業會在每一卷磁帶上寫入一個「可用媒體」標籤。
1. 使用 [電腦管理],展開 [儲存裝置] ,展開 [卸除式媒體] ,再展開 [實體位置] 。
2. 找出磁帶裝置的登錄項並將其展開,然後按一下該磁帶裝置底下的 [媒體] 圖示。
3. 將磁帶插入磁帶機內。RSM 會讀取磁帶,此磁帶所在的媒體集區則顯示在右方窗格內 (若是全新的媒體,這通常是無法辨識的媒體集區)。
4. 在右方窗格中,在磁帶上按一下滑鼠右鍵,再按一下 [準備] 。您可以監控此作業的工作佇列以確定它是否完成,或者等待狀態變為「閒置,可用」(Idle, available),媒體集區變為「可用」。
5. 寫入可用標籤之後,請在磁帶上按一下滑鼠右鍵將其退出,再按 [退出] 。此時「媒體退出精靈」啟動,並將磁帶移至離線媒體櫃中。
6. 對於每個欲進行準備工作的磁帶,均請重複步驟 3 至 5。
記住,Ntbackup 在進行備份時只能使用準備好的磁帶。請預先計算好您的備份策略需要多少卷磁帶,並在繼續下一節之前,準備好所有的磁帶。
替磁帶加上標籤
準備好磁帶以後,請利用 Ntbackup 以可描述磁帶內容的名稱,撰寫一個 Microsoft Tape Format (MTF) 標籤。完成以後,即可替 Ntbackup 排程,藉由指定相同的媒體標籤名稱,不斷重複使用該磁帶。 請使用下列步驟,替您要 Ntbackup 重複使用的每一卷磁帶加上標籤。
注意 :此作業會在每一卷磁帶中寫入一個唯一的 MTF 標籤。請確定每一卷磁帶都有唯一的名稱,即使您每週輪流使用不同組的磁帶。
1. 確定備妥的磁帶已放入獨立磁帶媒體櫃中。
2. 啟動 Ntbackup,再按一下 [備份精靈] 。
3. 當 [備份項目] 對話方塊出現時,請按一下 [備份選取的檔案、磁碟機或網路資料] 。
4. 當 [要備份的項目] 對話方塊出現時,請按一下任何本機磁碟機上的任何單一資料夾。
5. 當 [儲存備份目的地] 對話方塊出現時,請在 [備份媒體類型] 區域中按一下磁帶機,再於 [備份媒體] 區域中按一下 [新媒體] 。
6. 當 [完成備份機靈] 對話方塊出現時,請按一下 [進階] 。
7. 繼續進行螢幕上的步驟,直到 [備份標籤] 對話方塊出現為止。
在此對話方塊中,您可以變更 [備份標籤] 和 [媒體標籤] 欄位。
[媒體標籤] 欄位中的資訊依磁帶不同而有所差異。請修改 [媒體標籤] 欄位的內容,讓它含有有意義的資訊,以代表一週內每一天的磁帶。本文中的範例使用唯一的名稱,如 Monday-Full、Tuesday-Full 等等 (一週內的每一天及每一卷磁帶都有一個唯一的名稱)。
8. 繼續執行對話方塊的內容並開始備份。如此即可備份單一資料夾,並寫入一個有意義的媒體標籤,且從現在開始您可以用它來排定備份的時程。
9. 備份程序完成之後,結束 Ntbackup。
10. 使用 RSM,您可以在備份媒體集區中看到磁帶出現。在此磁帶上按一下滑鼠右鍵,即可檢視其內容。若您按一下側邊的標籤, [識別標籤] 欄位中含有您在步驟 7 中所指定的磁帶名稱。
從現在開始,只要您排定在該日執行備份,並選擇覆寫相同的標籤名稱時,便會使用這個名稱。
11. 在磁帶上按一下滑鼠右鍵,再按一下 [退出] ,然後再於磁帶上貼上備份時所指定的標籤名稱。
12. 對每一卷磁帶重複上述步驟,直到所有磁帶都擁有有效的 MTF 媒體標籤為止。
排定週期性的每週備份
您可以使用 Ntbackup 內建的排程器排定週期性的每週備份工作。您可以選擇建立一個批次檔搭配「排程工作精靈」 或 at schedule 指令使用。
首先,您需要使用 Ntbackup 來建立備份選擇 .bks 檔, Ntbackup 使用這個檔案來偵測要備份哪一磁碟機/資料夾/檔案。
若在備份排程器之外排程,您還得利用 Ntbackup 建立備份指令行字串供批次檔使用。 若要排定週期性的每週備份:
1. 啟動 Ntbackup,再按一下 [備份精靈] 。
2. 依照精靈畫面的指示執行,並選擇您每晚想備份的磁碟區或資料夾。
3. 當 [儲存備份目的地] 對話方塊出現時,請在 [備份媒體類型] 區域中按一下磁帶機,再於 [備份媒體] 區域中,按一下與目前排定備份的日期相符的磁帶名稱 (如 Monday-Full)。
4. 當 [完成備份精靈] 對話方塊出現時,請按一下 [進階] 。
5. 當 [媒體選項] 對話方塊出現時,請按一下 [用這個備份取代媒體上的資料] 。
6. 當 [備份標籤] 對話方塊出現時,請修改 [媒體標籤] 欄位的內容,使其與目前磁帶的媒體標籤相符。這樣做可以確保在下次進行週期性備份時,可以掛載同一日的磁帶。
7. 當 [何時製作備份] 對話方塊出現時,按一下 [稍後] ,再輸入一個描述性的工作名稱。
8. 按一下 [設定排程] ,排定備份在適當時間執行。若要讓這一天的備份週期性地執行,請按一下 [每週] (位於 [工作排程] 清單中。)
9. 對一週內的每一天重複上述步驟,排定備份每週重複發生。請確定您使用步驟 5 中正確的媒體標籤,以符合該日的磁帶名稱。
10. 確定目前備份之標籤磁帶已放入獨立磁帶媒體櫃中。
若想排定一個批次檔,在備份的同時還執行其他額外工作,您可以從 Ntbackup 中的 [排定工作] 標籤中檢視任何排定工作的內容,或在「控制台」中使用「排定的工作」工具,從排定的備份工作中複製備份指令字串。
然後將此字串置於個別的批次檔內,並將它 改成符合您需求的內容,再以 at 指令或「工作排程器」排定其時程。
下例是從上面所執行的某個已排程備份的內容複製而來的備份指令行:
C:\WINNT\system32\ntbackup.exe backup "@C:\Documents and Settings\bkupuser\Local Settings\Application Data\Microsoft\Windows NT\NTBackup\data\daily.bks" /n "Monday-Full" /d "Mondays Full Backup" /v:no/r:no /rs:no /hc:on /m normal /j "Mondays Job" /l:f /t "Monday-Full"
注意 :最後的參數可能是 /g {guid},代表 RSM Logical_Media ID 而非 /t "tape_name"。{guid} 值是一個 32 位元值,形式為 "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"。
您可以使用其中一種參數,在批次檔中代表以及使用磁帶。除了查看已排程 的備份工作內容之外,所有邏輯媒體的 {guid} 值都可以使用以下的 Rsm.exe 指令擷取出來。這些值會依序列出,因此很難分辨哪一個 {guid} 值代表哪一捲磁帶。
Rsm.exe view /tlogical_media /guiddisplay
您也可以在批次檔中使用 Rsm.exe 指令行工具,指示 RSM 在完成備份後退出磁帶。
使用 Rsm.exe 併發出下列指令,即可擷取出實體媒體名稱,以搭配 [退出] 指令使用:
rsm view /tphysical_media
PHYSICAL_MEDIA
Monday-Full - 1
Tuesday-Full - 1
Wednesday-Full - 1
Thursday-Full - 1
Friday-Full - 1
此指令順利完成。
備份完成後,請在每一天的批次檔案中,使用 rsm eject 指令來退出該日的磁帶:
rsm eject /pf"Monday-Full - 1" /astart
下例顯示星期一要執行的備份批次檔範例:
echo off start /wait C:\WINNT\system32\ntbackup.exe backup "@C:\Documents and Settings\bkupuser\Local Settings\Application Data\Microsoft\Windows NT\NTBackup\data\daily.bks" /n "Monday-Full" /d "Mondays Full Backup" /v:no/r:no /rs:no /hc:on /m normal /j "Mondays Job" /l:f /t "Monday-Full" rsm eject /pf"Monday-Full - 1" /astart
不受管理的方法
若要使用不受管理的方法,只需在備份指令字串的結尾使用 /um 參數 (switch) 即可。
這會告訴 Ntbackup 尋找第一個可用的磁帶、格式化該磁帶、再使用該磁帶進行目前的備份作業。您必須使用 /p 參數 (switch) 來指派一個媒體集區裝置 (例如, "8mm mp" );當您使用 /um 參數時。若這麼做,請勿使用下列參數:
/a
/g
/f
/t
當您使用 /um 參數時 (switch),Ntbackup 會在下列媒體集區中搜尋可用的媒體:
• 可用集區
• 匯入集區
• 無法辨識的集區
• 備份集區
當 Ntbackup 偵測出一個可用磁帶時,搜尋便停止,此磁帶會被格式化,並在未提示您輸入任何資料的情況下使用。
此指令不適用於磁帶載入程式,且只有在使用獨立磁帶裝置時才能使用。
注意 :某些低價的獨立式磁帶機不會通知 RSM 媒體已經變更。若您使用的是這一類的磁帶機,在下次備份週期時,備份報告中會記錄下列錯誤訊息之一:
• 未執行作業,因為沒有未使用的可用媒體。(The operation was not performed because no unused media was available)
-或-
• 未執行作業,因為找不到指定的媒體。(Operation was not performed, because the specified media cannot be found)
若要防止發生這些錯誤,請參閱下列文件,從中尋找解決或避開的方法:
267574 (http://support.microsoft.com/kb/267574/EN-US/) Scheduled Backup May Fail After Changing Media
使用 /um 參數時,建議您不要利用 /n 參數替媒體加上標籤。請讓備份作業使用預設的日期/時間作為標籤名稱和說明。這樣可以避免多重磁帶擁有相同的標籤名稱,否則可能造成 RSM 要求手動掛載磁帶,使得備份作業無法繼續以無人看管的方式自動完成。
下面是一個備份批次檔的範例: echo offstart /wait rsm.exe refresh /lf"Your_Library_Name"c:\winnt\system32\ntbackup.exe backup "@C:\Documents andSettings\bkupuser\Local Settings\Application Data\Microsoft\WindowsNT\NTBackup\data\daily.bks" /v:no /r:no /rs:no /hc:on /m normal/j "daily.job" /l:f /p "8mm mp" /um
如需所有可用備份參數 (switch) 的清單,或者這些範例中所用參數之詳細資訊,請鍵入下列指令,參閱 Ntbackup 說明檔: ntbackup /?
如需詳細資訊,請按一下下列文件編號,參閱 Microsoft Knowledge Base 中的這份文件:
234492 (http://support.microsoft.com/kb/234492/EN-US/) Windows Backup Creates New Tape GUID When Writing New Label
267574 (http://support.microsoft.com/kb/267574/EN-US/) Scheduled Backups Fail on Standalone Tape Drives After Changing Media
243260 (http://support.microsoft.com/kb/243260/EN-US/) Changed Parameters for Scheduled Backup Job May Not Be Saved
2008年12月11日 星期四
Oracle exp/imp的query參數
@Windows:
exp ... query='where deptno=10'
exp ... query='where deptno=' '10' ' '
exp ... query='where deptno"<"10'
@Solaris(C shell):
exp ... query=\"where col1 < 1000\"
exp ... query=\"where col1 \< '1000'\"
@ Linux
exp ... query=\"where owner \= \'SYSTEM\'\"
2008年11月21日 星期五
10個免費的圖表API
繪製圖表的API除了使用商業產品(Crystal Report等),以及Office Web Component(Excel),其實也有很多免費的工具,如下面10個,其中最特別的Google Chart是線上服務,把資料打在google chart的url裡面,就會在網頁上畫出圖表,Google果然是online應用的專家!
另外自己現在寫C#,搭配使用的是ZedGraph,也相當的好用。
- Google Chart API lets you dynamically generate charts. Google chart API is an online service and needs an internet connection. It works by sending an URL to google which will return the chart image. It is very simple to use and if you need abstraction from writing url's you can use any freely available libraries like gchartrb or javagooglechart
- Flot is a pure Javascript plotting library for jQuery. It produces graphical plots of arbitrary datasets on-the-fly client-side.The focus is on simple usage (all settings are optional), attractive looks and interactive features like zooming.Although Flot is easy to use, it is also advanced enough to be suitable for Web 2.0 data mining/business intelligence purposes which is its original application.
- Open Flash Chart is a Flash charting component. It is fairly easy to setup and has classes written in PHP, Perl, Python, Java, Ruby on Rails, and .Net to connect to the Chart. You can create some really nice looking Bar Charts, Pie Charts, Area Charts and etc…
- AmCharts is a set of Flash charts for your websites and Web-based products. AmCharts can extract data from simple CSV or XML files, or they can read dynamic data generated with PHP, .NET, Java, Ruby on Rails, Perl, ColdFusion, and many other programming languages.
- PlotKit is a Chart and Graph Plotting Library for Javascript. It has support for HTML Canvas and also SVG via Adobe SVG Viewer and native browser support.PlotKit is fully documented and there is a quick tutorial to get you started.PlotKit is a complete rewrite of CanvasGraph. It is better structured and supported.
- Flotr is a javascript plotting library based on the Prototype Framework version 1.6.0.2. Flotr lets you create graphs in modern browsers with features like legend support, negative value support, mouse tracking, selection support, zoom support, event hooks, CSS styling support and much more.
- PHP/SWF Charts is a simple, yet powerful PHP tool to create attractive web charts and graphs from dynamic data.You can use PHP scripts to generate or gather the data from databases, then pass it to this tool to generate Flash (swf) charts and graphs. Any other scripting language (ASP, CFML, Perl, etc.) can be used with XML/SWF Charts (the XML version of the same tool.)PHP/SWF Charts makes the best of both the PHP and SWF worlds. PHP scripts provide integration, and Flash provides the best graphic quality.
- Visifire is a set of open source data visualization components - powered by Microsoft® Silverlight™. With Visifire you can create and embed visually stunning animated Silverlight Charts within minutes. Visifire is easy to use and independent of the server side technology. It can be used with ASP, ASP.Net, PHP, JSP, ColdFusion, Ruby on Rails or just simple HTML.
- FusionCharts Free is a cross-browser and cross-platform flash charting component that can be used to render data-driven & animated charts for your web applications and presentations.
- JFreeChart is a free 100% Java chart library that makes it easy fordevelopers to display professional quality charts in their applications.It has a flexible design that is easy to extend, and targets both server-side and client-side applications. It also supports many output types, including Swing components, image files(including PNG and JPEG), and vector graphics file formats (includingPDF, EPS and SVG)
2008年11月18日 星期二
自動磁碟清理
輸入"cleanmgr /sageset:99",數字從0~65535,會出現設定選項,可以設定要清除哪些種類的檔案,設定好要清除的選項按下確定即儲存(儲存位置99)。
要執行你預先儲存的選項只要打"cleanmgr /sagerun:99"即可。將這行指令設定為工作排程即可。
2008年11月12日 星期三
ASP.NET: Validation of viewstate MAC failed
範例:
<machinekey decryption="AES" validation="SHA1" validationkey="1239427563465sdfsf..." decryptionkey="sdf234rgr34t...">
將此設定放在web.config裡面的
msdn提到-- validation的參數: MD5--Specifies that ASP.NET uses the Message Digest 5 (MD5) hash algorithm to validate data. This algorithm produces better performance than SHA1.
參考資料:
Validation of viewstate MAC failed 驗證ViewState時 MAC 失敗
當 ASP.NET 發生 Viewstate MAC 的驗證失敗
machineKey Element (ASP.NET Settings Schema)
ASP.NET machineKey Generator
在 ASP.NET ViewState 中尋寶
執行效能: ASP.NET 應用程式的擴充策略
2008年9月30日 星期二
SQL定序
Cannot resolve collation conflict for equal to operation.
當你在建立DATABASE時可以選擇collation(定序),若你無法重建DATABASE,則可以調整每個TABLE中每個欄位的collation(定序)。
如果你跨DB join,則所有join的欄位定序都必須相同,否則就會出現你目前的錯誤,你可以進入Enterprise Manager中,選到你要的TABLE,按右鍵選擇Design Table,選到你要join的欄位,就可以設定collation(定序)。
當A與B的定序不同
合併讀取資時會因為定序值不同而出現錯誤訊息
Cannot resolve collation conflict for equal to operation
更改為以下後就可以直接抓取到資料
where A.username COLLATE Chinese_Taiwan_Stroke_CI_AS= B.username COLLATE Chinese_Taiwan_Stroke_CI_AS
2008年9月16日 星期二
IIS檔案上傳size限制
要求物件 錯誤 'ASP 0104 : 80004005' 不允許的操作,原因是web server的內定值被限制
以記事本開啟 C:\windows\sytem32\inetserv\metabase.xml
上傳限制:
找尋 AspMaxRequestEntityAllowed 字串
將 204800 (200K) 修改成你要的數字
下載限制:
找尋 AspBufferingLimit 字串
預設 4MB ,將它修改成你要的數字
該檔案由於被 IIS 系統使用中
請於 IIS 管理員中,於[本機電腦]上點右鍵
選擇[內容]進入後,將[啟用直接編輯 metabase 檔案] 勾選
即可變更metabase.xml檔案內容。
2008年9月12日 星期五
SQL2005 part4
從工作管理員看sqlserver.exe的記體使用量一直維持在131MB左右, 但可用記憶體剩2G多, 很怪! 另一台只有4G Ram的在工作管理員顯示吃到2.7G多(原因是開啟AWE後得從SQLSERVER: Total server memory看才正確!)
雖然很不想去動資料面, 畢竟這是廠商的職責, 不過看這樣子他們也是沒什麼招可玩了...
把自己學過的一點點東西拼湊起來急救看看, 先用sql profiler觀察一下, 大致是select幾個比較大的table時, cpu loading會衝到近滿載, 看了一下竟然沒建索引!! 自己照著畫面隨便建了幾個索引, 沒想到cpu loading馬上降下來!!
繼續把profiler錄下的語法拿到sql tuning advisor執行計畫跑看看, 工作成本變成原來的1/10, 感覺還滿爽的, 繼續再建幾個table的索引, 果然cpu好像吃了維骨力, 爬樓梯都不會喘了..傑克!這真是太神奇啦~~
更意外的是可用記憶體剩不到500MB啦(微軟建議/3gb跟AWE最好不要同時啟用, 以免造成OS記憶體不足, 這點有待觀察), performance monitor的SQLSERVER: Total server memory計數器數字也變成7G多, 看起來正常多了
A generic error occurred in GDI+
大部分原因是出在對該資料夾的寫入權限不足,或是沒有先產生該資料夾造成
-- 那你寫這什麼訊息啊! (/‵Д′)/~ ╧╧
微軟對該問題的KB
http://support.microsoft.com/?id=814675
2008年9月10日 星期三
SQL 2005 重要效能計數物件(Performance Counter)及建議值
列舉部份供參考:
| Object | Counter | Preferred Value |
| Memory | Available Mbytes | > 100MB |
| Paging File | %Usage | < 70% |
| Process (sqlservr) | %Privileged Time | < 30% of %Processor Time (sqlservr) |
| Processor | %Privileged Time | < 30% of Total %Processor Time |
| PhysicalDisk | Avg. Disk Sec/Read | < 8ms |
| PhysicalDisk | Avg. Disk sec/Write | < 8ms (non cached) < 1ms (cached) |
| SQLServer:Access Methods | Forwarded Records/sec | < 10 per 100 Batch Requests/Sec |
| SQLServer:Access Methods | FreeSpace Scans/sec | <10 per 100 Batch Requests/Sec |
| SQLServer:Access Methods | Full Scans / sec | (Index Searches/sec)/(Full Scans/sec) > 1000 |
| SQLServer:Access Methods | Workfiles Created/Sec | < 20 per 100 Batch Requests/Sec |
| SQLServer:Access Methods | Worktables Created/Sec | < 20 per 100 Batch Requests/Sec |
| SQL Server:Buffer Manager | Buffer Cache hit ratio | > 90% |
| SQL Server:Buffer Manager | Free list stalls/sec | < 2 |
| SQL Server:Buffer Manager | Lazy Writes/Sec | < 20 |
| SQL Server:Buffer Manager | Page Life Expectancy | > 300 |
| SQLServer:Buffer Manager | Page lookups/sec | (Page lookups/sec) / (Batch Requests/sec) < 100 |
| SQL Server:Locks | Lock Requests/sec | (Lock Request/sec)/(Batch Requests/sec) < 500 |
| SQLServer:SQL Statistics | SQL Compilations/sec | < 10% of the number of Batch Requests/Sec |
| SQLServer:SQL Statistics | SQL Re-Compilations/sec | < 10% of the number of SQL Compilations |
詳細資訊:
TechNet Webcast: SQL Server Performance Counter Guidance (Level 300)
SQL2005 part3
預設會停用 Windows 原則鎖定記憶體分頁選項。必須啟用這個權限,才可設定 Address Windowing Extensions (AWE)。此原則決定哪些帳戶可以使用處理序將資料保留在實體記憶體中,以防止系統將資料傳送到磁碟上的虛擬記憶體。在 32 位元作業系統上,如果在未使用 AWE 時設定這個權限,則會明顯降低系統效能。雖然非必要,不過我們建議在使用 64 位元作業系統時在記憶體中鎖定分頁。
請注意 對於 64 位元版本的 SQL Server 2005,只有 SQL Server 2005 Enterprise Edition 可以向右使用 鎖定分頁記憶體中的 使用者。
要指派 在記憶體中的鎖定分頁 使用者權限,請依照下列步驟執行:1. 請按一下 [ 開始 ] ,再按一下 [ 執行 ] ,鍵入 gpedit.msc ,然後再按一下 [ 確定 ] 。 群組原則 ] 對話方塊隨即出現。
2. 展開 [ 電腦組態 ,然後展開 [ Windows 設定 ] 。
3. 展開 [ 安全性設定 ,然後再展開 [ 本機原則 ] 。
4. 請依序按一下 [ 使用者權限指派 ] ,依序及 [ 鎖定分頁記憶體中 。
5. 在 [ 本機安全性原則設定 ] 對話方塊中,按一下 [ 新增使用者或群組 。
6. 在 [ 選取使用者或群組 ] 對話方塊,新增的帳戶擁有執行 Sqlservr.exe 檔案,使用權限,然後按一下 [ 確定 ] 。
7. 關閉 群組原則 ] 對話方塊。
8. 重新啟動 SQL Server 服務。.
您將 在記憶體中的鎖定分頁 使用者權限指派並重新啟動 SQL Server 服務之後,Windows 作業系統不再出 SQL Server 中緩衝區集區記憶體頁面處理。 不過,Windows 作業系統仍然可以分頁在 SQL Server 處理序內 nonbuffer 集區記憶體不足。
若要針對 SQL Server 2005 的執行個體啟用 AWE,請使用 sp_configure 將 awe enabled 選項設為 1,然後重新啟動 SQL Server。因為 SQL Server 啟動時會啟用 AWE,並直到 SQL Server 關機為止,所以在使用 awe enabled 時,SQL Server 會傳送「已啟用 Address Windowing Extensions」訊息到 SQL Server 錯誤記錄檔以通知使用者。
網路應用程式的資料輸送量最大化
如果選取了 [網路連線] 中的 [檔案共用的資料輸送量最大化] 選項,作業系統會將優先權撥給執行緩衝輸入/輸出 (I/O) 作業的應用程式,方法是在檔案系統快取中,快取這些應用程式的 I/O 頁面。這個選項會限制 SQL Server 可用於一般作業的記憶體。
2008年9月8日 星期一
SQL2005 part2
所有資料庫軟體的主要設計目的之一,便是將磁碟 I/O 最小化,因為磁碟的讀取和寫入,是電腦上最需要用到大量資源的作業之一。SQL Server 會在記憶體中建立緩衝集區,以保存從資料庫讀取的頁面。SQL Server 的大部分程式碼,主要是用來最小化磁碟和緩衝集區之間實體讀取和寫入數目。SQL Server 會嘗試在兩個目標之間取得平衡: 避免緩衝集區過大,造成整個系統的記憶體不足。 最大化緩衝集區的大小以最小化資料庫檔案的實體 I/O。
資料庫實在是IT又愛又恨的東西,以前公司的資料庫,大約在table成長到約100萬筆資料時,效能瞬間down到不能用,只能靠刪除資料的方式恢復效能,大約回到90萬筆就很快了,SQL Server你真行! Orz
不過比起另一個系統把預約單檔案(1~5KB),存放在另一台server的share folder(EMC DMX等級的SAN哦),等要用到時再去讀取,結果就是檔案到了約10萬個以後開始讀取寫入都會漏資料!! 最慘的是沒有log,無從找出問題。
現在回想起來,如果選擇用資料庫來處理這種需求。100萬筆資料vs.100萬個檔案,很明顯資料庫對100萬筆資料處理還算輕而易舉,DB雖然也會有瓶頸及tuning的問題,但好歹有方法可以依循,有架構可以利用,更重要的有很多工具找出問題。
在32-bit CPU memory 配置中
- 8G的預設配置如下:
OS 2GB
APP 2GB(包含SQL SERVER及其它應用程式)
剩餘4GB(未使用) - 8G的設定 /3GB 的配置如下:
OS 1GB
APP 3GB(包含SQL SERVER及其它應用程式)
剩餘4GB(未使用) - 8G的設定 /PAE 的配置如下:
OS 2GB
APP 2GB(包含SQL SERVER及其它應用程式)
剩餘4GB(給BUFFER CACHE資料快取使用) - 8G的設定 /PAE /3GB 的配置如下:
OS 1GB
APP 3GB(包含SQL SERVER及其它應用程式)
剩餘4GB(給BUFFER CACHE資料快取使用)
在64-bit CPU memory 配置中
- 8G的設定的配置(系統自行配置)如下:
OS 1GB(可另行設定)
剩餘7GB(包含SQL SERVER及其它應用程式)
若你的記憶體超過16GB則不可設定 /3GB及/PAE,因為OS一定要吃2GB
啟用 AWE 功能之後,SQL Server 就無法動態管理記憶體,簡單地說,就是它會用掉所有可用的記憶體
參考: SQL Server的記憶體架構
http://technet.microsoft.com/zh-tw/library/ms187499.aspx
前天裝好了x86-64的2003+sql2005想說把爛爛的server多榨出一點效能來,看能不能撐到user要的5年資料(估計150G),結果廠商來裝他們的軟體竟然說"我們的程式抓不到64位元os的odbc"...Orz
odbc不就是個API嗎?還會抓不到,真詭異。不過更詭異的還在後面,3台ap用odbc連線竟然只有一台連的到,還都在同網段。今天一不作二不休,就重灌成32bit的吧,果然就很順利了!! 想想可能是請廠商在裝os的時候,HP的導引光碟好像是拿成x86 32bit的...難怪裝好以後有幾樣裝置沒抓到,以後還是要多細心點,不要顧聊天 XD
2008年9月2日 星期二
SQL2005 tuning & testing
想到上次去恆逸上課老師說SQL應該作磁碟重組,google找到一套IObit SmartDefrag,可以在win2003跑,還是免費軟體,等上線看看效能是否有提昇。
Server規格:
HP DL385G2 (AMD Opteron 1.8Ghz*2 / 4GB Ram)
IBM X3650 (Intel Xeon 2.0Ghz*2 / 4GB Ram / 3.5" 15000轉 sas*2)
DELL 6850 (Intel Xeon 2.6Ghz*4(4核) / 8GB Ram / 3.5" 15000轉 scsi*2)
Raid Controller:
HP Smart Array E200: 64MB cache, support raid 0/1/1+0
HP Smart Array P400: 256MB cache(大4倍!!), support raid 0/1/1+0/5/6
IBM ServerRAID 8K: 256MB cache, support raid 0/1/1+0/5/6
Dell PERC5/i: 256MB cache, support raid 0/1/1+0/5/6
測試參數:
- Worker:4 (測dell 6850開到16)
- Maximum Disk Size: 20000000 sectors(*512Bytes = 1GB)
- # of Outstanding IO: 10 (值太小灌不滿效能)
- Transfer Request Size: 8KB
- Percent Read/Write Distribution: 33% Write, 67% Write, 100% Random
- Run Time: 1 mins
- Ramp Up Time:10 secs
接下來要PK大亂鬥啦:
E200,4顆硬碟作1+0,配置在2個channel
E200,2顆硬碟作1+0,配置在1個channel
P400,2顆硬碟作1+0,配置在2個channel
IBM,2顆硬碟作1+0,配置在1個channel
結論:
- 作Raid1/1+0,raid controller的cache大小似乎影響不大,看P400跟E200數據差不多,E200不能作raid5,成本大概低很多(以後開規格要小心!!!)。(某論壇網友評語: E200是一塊半殘卡,LSI 1068E的,不帶處理器,做R0,R1凑和...)
- Dell這張卡還滿多人用的樣子,不過測出來不怎麼樣,也許跟硬碟比較舊有關。
- IBM還真是強啊!! HP用4顆作0+1都輸了。
- 以上都是亂測,平台規格也不一致,只是參考用囉! 不過至少新的配置效能是有提昇的
#iometer簡介#
Iometer是目前業界量測儲存系統I/O效能的標準工具,可藉由負載產生器(Workers)的參數調整,透過測試元件產生不同區塊大小的輸入輸出請求與讀取/寫入的分布比例,模擬網路伺服器、檔案伺服器以及線上交易資料庫的讀寫行為。 由測試得出系統的最大I/O處理能力、傳輸速率與CPU占用率,使用者即可評估在不同應用環境下,伺服器儲存系統或是外接儲存設備的性能。
Iometer本身是一套開放原始碼軟體,最新的版本為2006.07.27,可支援Windows、Linux、Solaris與Mac OS X等平臺。
Iometer重要參數:Iometer內可調節的參數相當多,我們從一般效能測試中常用的一些參數,逐一簡單說明。 - Worker:設定每個磁碟同時執行的執行緒(thread)數目。對一些高性能伺服器或企業級儲存設備,必須增加Worker數目,才能測得最大的效能。
- # of Outstanding IO:設定每個磁碟同時發起I/O的數量,若是模擬串流檔案的播放或類似環境,可用預設值1。若要模擬同時有多個應用程式發出存取需求的環境,可依不同狀況設定。不過如果設太大的話,系統很可能會當機。
- Transfer Request Size:每個I/O存取需求的Bytes大小,要測試系統最大I/O處理能力可設為512Bytes,要測試最大傳輸能力(MB/s)可設為128kB到512kB。
- Percent Read/Write Distribution:讀取/寫入比例,模擬一般應用程式存取可設為50%讀+50%寫,或60%讀+40%寫;若要模擬備份寫入行為,可設為100%寫入;若要模擬還原動作,可設為100%讀取。若要讓GbE這類全雙工通道發揮最大效率,可設為50%讀+50%寫,以便啟動雙向傳輸。
- Percent Random/Sequential Distribution:隨機/循序存取比例,若要模擬多媒體串流檔案播放,或是大量連續資料的備份/還原,可設為100%循序存取;若要模擬高交易資料庫,可設為100%隨機存取。
- Run Time:測試執行時間,一般設為30到60秒。
- Ramp Up Time:在測試某些擁有大量快取記憶體的系統時,為避免系統剛開始測試時一些異常或不穩定的數值,影響測試統計結果,可設定15到60秒的Ramp Up時間,等待系統進入穩定後再錄取測試數值。


