原创 一個腳本的誕生

 手上一個有一個讓人很鬱悶的工作,那就是維護項目組給客戶的示例。這個示例包含4個project,各有20多個文件,每次修改的時候就會有示例需要修改,修改後的文件必須按照project爲單位打成zip包,copy到指定的地方去。包裏不能包含

原创 基於概率的算法分析摘要

基於概率的算法分析摘要 有如下的算法: HireAssitant() { Best=0; For 1 to n {     Interview candidate I;     If( candidate I is better than

原创 數據庫引擎-線程和任務

每個數據庫實例都是一個獨立的操作系統進程。每個進程可能同時服務於上千個連接,每個連接都需要一個或多個線程來接受請求,處理並返回結果。此外,數據庫進程還需要線程維護網絡通訊的線程,各個服務之間進行通訊的線程。   數據庫是如何調度這些線程呢

原创 SQL研究 - Pivot

在一個風和日麗的早上,老闆從郵箱裏發給你一個任務,希望你根據一個投資記錄表做出一個統計。 你匆匆跑到指定的數據庫,發現結構如下的一張表: CREATE TABLE [dbo].[Investment]( [Investor] [nvarc

原创 請慎重!人生幾個致命的經典問答

問題一,    如果你家附近有一家餐廳,東西又貴又難吃,桌上還爬着蟑螂,你會因爲它很近很方便,就一而再、再而三地光臨嗎?     回答:你一定會說,這是什麼爛問題,誰那麼笨,花錢買罪受?     可同樣的情況換個場合,自己或許就做

原创 數據庫引擎研究 - Log

正如大家所知道的那樣,數據庫裏不僅有數據,還有日誌,便是Log。我們知道,數據庫的數據終究是依賴於系統的IO寫入到文件裏去並從文件讀取的。數據庫不能保證系統能成功的執行它的每一個寫出的請求,大家知道,系統也不容易,天知道什麼時候就斷電了,

原创 數據庫引擎-存儲管理 1

今日和一個朋友聊起數據庫,伊很憤憤的說,數據庫不就是一堆文件讀取寫入嗎,我找幾個人幹一年也差不過弄個能用的出來,幹嗎那麼貴。實話說,此話有他的道理,雖然各大數據庫廠商不遺餘力的在自己的產品上疊加無窮無盡的概念,增加無數的噱頭,歸根到底,它

原创 SQL研究-分區表

所謂分區表就是當表太大的時候,比如1百萬行,按照某個特殊的列分成10份,每份10萬行左右,要求這一列中的值是有限的,並且每個值對應的行數基本相等。使用分區表可以方便的進行整個分區的增減,只涉及元數據而不涉及具體的數據寫入操作。   創建一

原创 數據庫引擎-存儲管理2

上一篇文章描述了數據庫是如何快速而精確的將數據保存到文件中的,同時也提到了分配單元和分配單元索引表。 現在,我們來看看數據庫對象是如何將它們的內容寫在這些頁面上的。並非所有的數據庫對象都需要寫入數據文件,像存儲過程,函數,視圖,表的結構等

原创 數據庫引擎-內存管理

數據庫能夠高效的讀寫硬盤上的內容,很大程度是因爲它使用了普通應用程序所沒有的內存管理機制。爲了保證性能,數據庫引擎需要將很多信息保存在內存中,典型的例子有:數據文件的位索引表;一個大表的索引頁;一個需要經常修改的表;以及數據庫本身的一些內

原创 數據庫引擎-事務和併發

事務是一個很基本的概念,簡單的說就是一個組操作一起做完。 當兩個事務併發執行時,可能會出現以下的現象: 修改丟失:兩個線程同時讀出某行的值,修改完先後保存回去,先保存的值就丟失了。假設你和你老婆在兩個ATM上同時對同一個賬號存錢,開始

原创 SQL研究 - CTE深入

本文深入研究如何使用CTE完成圖的深度遍歷,並查找最短路徑。本文假設你在爲一家航空公司做一個導遊的軟件,其中的一個基本需求是查詢從一個城市到另一個城市的飛行路線。並假設除了軟件所已知的航班之外,並不存在其他的直達航班。首先你讓用戶看到這樣

原创 SQL研究 - Apply

  Apply是SQL Server 2005引入的一個新操作符,具有如下的基本語法:   select * from tableA apply table_func(...)   Apply左邊表的每一行輸入右邊的函數,該函數根據輸入返

原创 SQL 研究 - Cube 和 RollUp

使用Pivot,你終於滿足了老闆的要求,生成了各個投資人在Asia和Europe的投資統計表。在讚許的同時,他又提出新的需求: 需要統計每個投資方在各個地區的投資總和,各個投資方的所有投資,以及各個地區所吸引的所有投資。   又一次,你跑

原创 SQL研究 - 查詢語句被處理的過程

我們向數據庫提交了一個查詢,假如我們的語句是正確的,我們理所當然的期望的到一個正確的結果。   如果要牛角尖一下,怎樣纔是一個正確的查詢呢? 顯然首先你查詢的對象是存在的,不管是表還是視圖,函數或者存儲過程。你指定的條件是合法,不管是Ji