當前位置:首頁 » 編程語言 » 喚醒sql
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

喚醒sql

發布時間: 2023-04-02 02:16:55

sql中觸發器怎樣執行的

創建觸發器 是特殊的存儲過程,自動執行,一般不要有返回值。

1、後觸發器 (AFTER,FOR)先執行對應語句,後執行觸發器中的語句。

2、前觸發器 並沒有真正的執行觸發語句(insert,update,delete),而是執行觸發後的語句。

3、行級觸發器 (FOR EACH ROW) 在SQL server 中不存在。

(1)喚醒sql擴展閱讀:

創建觸發的語法

CREATE TRIGGER trigger_name --觸發器名稱

ON table_name --觸發的表

[WITH ENCRYPTION]

FOR [DELETE, INSERT, UPDATE] --選擇觸發器類型

AS --觸發後要做的語句

T-SQL語句

GO --結束標記

資料庫優化(ER模型設計)

訪問需要的完整解datamole4.adoquery2.sql.add('SELECT借書證號,密碼FROM[user]WHERE(借書證號=:tt)');
datamole4.adoquery2.parameters[0].value:=username;
datamole4.adoquery2.open;
在為TQuery或TADOquery部件設置SQL屬性時調用Close方法總是很安全的,如果TQuery或TADOquery部件已經被關閉了,調用Close方法時不會產生任何影響。在應用程序中為SQL屬性設置新的SQL命令語句時,必須要調用Clear方法以清除SQL屬性中現存的SQL命令語句,如果不調用Clear方法,便調用Add方法向SQL屬性中設置SQL命令語句,那麼新設置的SQL命令語句會追加在現存SQL命令語句後面,在程序運行時常常會出現出乎意料的查詢結果甚至程序無法運行下去。
在這里要特別注意的,一般情況下TQuery或TADOquery部件的SQL屬性只能包含一條完整的SQL語句,它不允許被設置成多條SQL語句。當然有些資料庫伺服器也支持在TQuery或TADOquery部件的SQL屬性中設置多條SQL語句,只要資料庫伺服器允許這樣,我們在編程時可以為SQL屬性設置多條SQL語句。
在為TQuery或TADOquery部件設置完SQL屬性的屬性值之後,也即編寫好適當的SQL程序之後,可以有多種方式來執行SQL程序。
在設計過程中,設置完TQuery或TADOquery部件的SQL屬性之後將其Active屬性的值置為True,這樣便可以執行SQL屬性中的SQL程序,如果應用中有與TQuery或TADOquery部件相連的數據瀏覽部件(如TDDGridTDBEdit等)那麼在這些數據瀏覽部件中會顯示SQL程序的執行結果。
在應用程序運行過程中,通過程序調用TQuery或TADOquery組件的Open方法或ExecSQL方法可以執行其SQL屬性中的SQL程序。Open方法和ExecSQL方法是不一樣的。Open方法只能用來執行SQL語言的查詢語句(Select命令),並返回一個查詢結果集,而ExecSQL方法還可以用來執行其它常用的SQL語句(如INSERT,UPDATE,DELETE等命令),例如:
Query1.Open(這樣會返回一個查詢結果集)
如果調用Open方法,而沒有查詢結果時,會出錯。此時應該調用ExecSQL方法來代替Open方法。如:
Query1.ExecSQL(沒有返回結果)
當然在設計應用程序時,程序設計人員是無法確定TQuery或TADOquery組件中的SQL語句是否會返回一個查詢結果的。對於這種情況應當用Try…Except模塊來設計程序。在Try部分調用Open方法,而在Except部分調用ExceSQL方法,這樣才能保證程序的正確運行。
例如:
Try
Query1.Open
Except
Query1.ExecSQL
End
通過Tquery或TADOquery組件可以獲得兩種類型的數據:
u「活動」的數據
這種數據就跟通過TTable部件獲得的數據一樣,用戶可以通過數據瀏覽部件來編輯修改這些數據,並且當調用Post方法或當焦點離開當前的數據瀏覽部件時,用戶對數據的修改自動地被寫回到資料庫中。
u非活動的數據(只讀數據)
用戶通過數據瀏覽部件是不能修改其中的數據。在預設情況下,通過TQuery部件獲得的查詢結果數據是只讀數據,要想獲得「活動」的數據,在應用程序中必須要設置Tquery或TADOquery組件的RequestLive屬性值為True,然而並不是在任何情況下(通過設置RequestLive的屬值True)都可以獲得「活動」的數據的,要想獲得「活動」的數據,除了將TQuery部件的RequestLive屬性設置為True外,相應的SQL命令還要滿足以下條件。
本地SQL語句查詢情況下,要得到可更新的數據集,SQL語句的限制為:
n查詢只能涉及到一個單獨的表
nSQL語句中不能包含ORDERBY命令
nSQL語句中不能含聚集運算符SUM或AVG
n在Select後的欄位列表中不能有計算欄位
n在Select語句WHERE部分只能包含欄位值與常量的比較運算,這些比較運算符是:Like,>,<,>=,<=。各比較運算之間可以有並和交運算:AND和OR
當通過SQL語句查詢資料庫伺服器中的資料庫表:
n查詢只能涉及到一個單獨的表
nSQL語句中不能包含ORDERBY命令
nSQL語句中不能含聚集運算符SUM或AVG運算
另外,如果是查詢Sybase資料庫中的表,那麼被查詢的表中只能有一個索引。
如果在應用程序中要求TQuery或TADOquery組件返回一個「活動」的查詢結果數據集,但是SQL命令語句不滿足上述約束條件時,對於本地資料庫的SQL查詢,BDE只能返回只讀的數據集。對於資料庫伺服器中的SQL查詢,只能返回錯誤的代碼。當Tquery或TADOquery組件返回一個「活動」的查詢結果數據集時,它的CanModIfy屬性的值會被設置成True。
§3.4MSSQLServer簡述
SQLServer是一個後台資料庫管理系統,它功能強大操作簡便,日益為廣大資料庫用戶所喜愛。越來越多的開發工具提供了與SQLServer的介面。SQLServer是一個關系資料庫管理系統,它最初是由Microsoft、Sybase和Ashton-Tate三家公司共同開發的。於1988年推出了第一個OS/2版本,在WindowsNT推出後,Microsoft與Sybase在SQLServer的開發上就分道揚鑣了,Microsoft將SQLServer移植到WindowsNT系統上,專注於開發推廣SQLServer的WindowsNT版本。
SQLServer2000是Microsoft公司推出的SQLServer資料庫管理系統的最新版本,該版本繼承了SQLServer7.0版本的優點,同時又比它增加了許多更先進的功能、具有使用方便、可伸縮性好與相關軟體集成程度高等優點。可跨越從運行MicrosoftWindows98的膝上型電腦到運行MicrosoftWindows2000的大型多處理器的伺服器等多種平台使用。MSSQLServer不但可以應用於大中型資料庫管理中,建立分布式關系資料庫,並且也可以開發桌面資料庫。事實上,SQLServer資料庫處理的基本結構,採取關系型資料庫模式,盡管如此,相信大家都可以輕易的發現,在SQLServer的資料庫處理方式,則是使用面向對象的操作方式與精神,也就是說,SQLServer的所有功能,都可以基於系統已經建立好的一些對象來達成,是相當OO(面向對象)的一個系統結構。
SQLServer企業管理器是SQLServer的主要管理工具,它提供了一個遵從MMC標準的用戶界面,使用戶得以:
·定義SQLServer實例組。
·將個別伺服器注冊到組中。
·為每個已注冊的伺服器配置所有SQLServer選項。
·在每個已注冊的伺服器中創建並管理所有SQLServer資料庫、對象、登錄、用戶和許可權。
·在每個已注冊的伺服器上定義並執行所有SQLServer管理任務。
·通過喚醒調用SQL查詢分析器,交互地設計並測試SQL語句、批處理和腳本
·喚醒調用為SQLServer定義的各種向導。
·
第三章圖書管理系統設計分析
§4.1應用需求分析
圖書管理系統需要滿足來自三方面的需求,這三個方面分別是圖書借閱者、圖書館工作人員和圖書館管理人員。圖書借閱者的需求是查詢圖書館所存的圖書、個人借閱情況及個人信息的修改;圖書館工作人員對圖書借閱者的借閱及還書要求進行操作,同時形成借書或還書報表給借閱者查看確認;圖書館管理人員的功能最為復雜,包括對工作人員、圖書借閱者、圖書進行管理和維護,及系統狀態的查看、維護並生成催還圖書報表。
圖書借閱者可直接查看圖書館圖書情況,如果圖書借閱者根據本人借書證號和密碼登錄系統,還可以進行本人借書情況的查詢和維護部分個人信息。一般情況下,圖書借閱者只應該查詢和維護本人的借書情況和個人信息,若查詢和維護其他借閱者的借書情況和個人信息,就要知道其他圖書借閱者的借書證號和密碼。這些是很難得到的,特別是密碼,所以不但滿足了圖書借閱者的要求,還保護了圖書借閱者的個人隱私。
圖書館工作人員有修改圖書借閱者借書和還書記錄的許可權,所以需對工作人員登陸本模塊進行更多的考慮。在此模塊中,圖書館工作人員可以為圖書借閱者加入借書記錄或是還書記錄,並列印生成相應的報表給用戶查看和確認。
圖書館管理人員功能的信息量大,數據安全性和保密性要求最高。本功能實現對圖書信息、借閱者信息、總體借閱情況信息的管理和統計、工作人員和管理人員信息查看及維護。圖書館管理員可以瀏覽、查詢、添加、刪除、修改、統計圖書的基本信息;瀏覽、查詢、統計、添加、刪除和修改圖書借閱者的基本信息,瀏覽、查詢、統計圖書館的借閱信息,但不能添加、刪除和修改借閱信息,這部分功能應該由圖書館工作人員執行,但是,刪除某條圖書借閱者基本信息記錄時,應實現對該圖書借閱者借閱記錄的級聯刪除。並且還應具有生成催還圖書報表,並列印輸出的功能。
在本系統中由於沒有列印機設備供試驗,所以預先把報表列印改成報表預覽。
設計不同用戶的操作許可權和登陸方法
對所有用戶開放的圖書查詢
借閱者維護借閱者個人部分信息
借閱者查看個人借閱情況信息
維護借閱者個人密碼
根據借閱情況對資料庫進行操作並生成報表
根據還書情況對資料庫進行操作並生成報表
查詢及統計各種信息
維護圖書信息
維護工作人員和管理員信息
維護借閱者信息
處理信息的完整性
對借閱過期的圖書生成報表
圖4-2圖書管理系統資料庫應用需求的總結
根據以上所做的需求分析,並略掉一些細節(如不考慮用戶的登錄;對記錄的維護),得出以下的三層數據流圖。
§4.2系統功能模塊劃分
系統功能框圖如圖4-10所示。
§4.3系統資料庫設計
4.3.1概念設計
在概念設計階段中,設計人員從用戶的角度看待數據及處理要求和約束,產生一個反映用戶觀點的概念模式。然後再把概念模式轉換成邏輯模式。將概念設計從設計過程中獨立開來,使各階段的任務相對單一化,設計復雜程度大大降低,不受特定DBMS的限制。
利用ER方法進行資料庫的概念設計,可分成三步進行:首先設計局部ER模式,然後把各局部ER模式綜合成一個全局模式,最後對全局ER模式進行優化,得到最終的模式,即概念模式。
(1)設計局部ER模式
實體和屬性的定義:
圖書(圖書編號,圖書名稱,作者,出版社,出版日期,備注,價格,數量,)
借閱者(借書證號,姓名,性別,身份證,聯系電話,密碼)
身份(身份編號,身份描述,最大借閱數)
圖書類別(圖書類別編號,類別描述)
ER模型的「聯系」用於刻畫實體之間的關聯。一種完整的方式是對局部結構中任意兩個實體類型,依據需求分析的結果,考察局部結構中任意兩個實體類型之間是否存在聯系。若有聯系,進一步確定是1:N,M:N,還是1:1等。還要考察一個實體類型內部是否存在聯系,兩個實體類型之間是否存在聯系,多個實體類型之間是否存在聯系,等等。聯系定義如圖4-5所示。解釋如下:
u一個借閱者(用戶)只能具有一種身份,而一種身份可被多個借閱者所具有;
u一本圖書只能屬於一種圖書類別(類別),而一種圖書類別可以包含多本圖書;
u一個用戶可以借閱多本不同的書,而一本書也可以被多個不同的用戶所借閱。
(2)設計全局ER模式
所有局部ER模式都設計好了後,接下來就是把它們綜合成單一的全局概念結構。全局概念結構不僅要支持所有局部ER模式,而且必須合理地表示一個完整、一致的資料庫概念結構。
1)確定公共實體類型
為了給多個局部ER模式的合並提供開始合並的基礎,首先要確定各局部結構中的公共實體類型。在這一步中我們僅根據實體類型名和鍵來認定公共實體類型。一般把同名實體類型作為公共實體類型的一類候選,把具有相同鍵的實體類型作為公共實體類型的另一類候眩
2)局部ER模式的合並
合並的原則是:首先進行兩兩合並;先和合並那些現實世界中有聯系的局部結構;合並從公共實體類型開始,最後再加入獨立的局部結構。
3)消除沖突
沖突分為三類:屬性沖突、結構沖突、命名沖突。
設計全局ER模式的目的不在於把若干局部ER模式形式上合並為一個ER模式,而在於消除沖突,使之成為能夠被所有用戶共同理解和接受的同一的概念模型。
3)全局ER模式的優化
在得到全局ER模式後,為了提高資料庫系統的效率,還應進一步依據處理需求對ER模式進行優化。一個好的全局ER模式,除能准確、全面地反映用戶功能需求外,還應滿足下列條件:實體類型的個數要盡可能的少;實體類型所含屬性個數盡可能少;實體類型間聯系無冗餘。
綜上所述,「圖書管理系統」的全局ER模式如圖4-13所示。
4.3.2關系資料庫的邏輯設計
由於概念設計的結果是ER圖,DBMS一般採用關系型(本人所使用的MSSQLServer就是關系型的DBMS),因此資料庫的邏輯設計過程就是把ER圖轉化為關系模式的過程。由於關系模型所具有的優點,邏輯設計可以充分運用關系資料庫規范化理論,使設計過程形式化地進行。設計結果是一組關系模式的定義。
(1)導出初始關系模式
book(圖書編號#,圖書名稱,圖書類別#,作者,出版社,出版日期,備注,價格,數量)class(圖書類別#,類別名)user(借書證號#,姓名,性別,身份編號#,身份證,聯系電話,密碼)ID(身份編號#,身份描述,最大借閱數)Owner(借書證號#,圖書編號#,借書日期)
圖4-14關系模式集
(2)產生子模式
子模式是用戶所用到的那部分數據的描述。除了指出用戶用到的數據外,還應指出數據與概念模式中相應數據的聯系,即指出概念模式與子模式之間的對應性。
借書子模式(借書證號#,姓名,圖書編號#,圖書名稱,借書日期)
圖4-15部分子模式
(3)根據設計中出現的問題本人在寫系統時還加入了兩個關系模式:
1、ownertemp:用於工作人員在處理借書、還書工作時臨時存儲借書、還書信息,以便列印報表時使用。
2、keyer:用於存儲工作人員和圖書館管理員的用戶名和密碼及許可權,以便工作人員或圖書館管理員進入相應的功能模塊時進行驗證用戶的身份。
4.3.3資料庫的實現
我選用MicrosoftSQLServer2000(企業版)資料庫來進行資料庫的邏輯設計。首先創建七個基本資料庫表如表4-1-4-7所示,然後根據全局ER圖,建立各個表之間的聯系,如圖4-8所示。
表4-1借閱者基本信息表的結構(User)
表4-2圖書信息表的結構(Book)
表4-3圖書類別信息表的結構(Class)
表4-4借閱者身份信息表的結構(ID)
表4-5借閱情況信息表的結構(Owner)
表4-6借閱情況臨時存儲信息表的結構(Ownertemp)
註:在owner表和ownertemp表中加入了索引欄位,用來唯一標識一條借書記錄,並且設置為標識,標識種子為1。
表4-7工作人員和管理員信息表的結構(Keyer)
圖4-8資料庫表間聯系圖
第五章圖書管理系統應用程序設計
§5.1系統窗體模塊組成
§5.2數據模塊窗體的設置
在編寫資料庫應用程序時,經常要遇到這樣的情況,即好多組件、窗體同時訪問相同的數據源,如果為每一個組件或者窗體都設置一個數據源將是十分耗時的工件,而且要保證這些數據源的確是相同的也需花一番功夫。那麼,能不能將這些數據源集中管理,最好是做成一個統一的模塊,需要時就將該模塊引入而不必直接操作數據源本身呢?數據模塊(DataMole)是解決這個問題最好的答案。簡單說來,數據模塊是用來集中管理數據源的一個窗體,該窗體可被需要的地方隨時引入。
但本人在開發這個系統時,開始使用了一下數據模塊,但在使用過程中卻碰到了一些問題。並且考慮這個系統使用到的TADOQuery控制項比較多,如果使用數據控制項可能會帶來管理上的麻煩,如弄混各個數據控制項的作用。還考慮到使用動態生成ADOQuery可能會更節省資源。所以在本人的系統中,開始做的第一個模塊「借閱者個人模塊」中還稍微使用了一下數據模塊。但在後面做的兩個模塊中大多都是用動態生成ADOQuery來實現的。並且由於SQL語句是動態加入的所以datamole中的控制項也不會多。
§5.3啟動畫面的實現
啟動畫面是為了給用戶一個良好的印像,加深軟體的親和力,沒有實際的功能,在Form1窗體中加入了Image和Time組件。啟動畫面的窗體略,主要的源代碼如下:
§5.4用戶登錄窗體的的實現
本窗體是為三種不同的用戶(一般用戶,工作人員,管理員)提供選擇以進入不同的模塊,滿足不同用戶的需求。源代碼比較簡單,略。
§5.5用戶密碼認證窗體的的實現
本窗體是為了讓工作人員或圖書館管理員按照用戶名和密碼進行登錄,並且跟據用戶名檢查Keyer表中的「許可權」欄位,以分辯進入圖書館管理人員模塊還是進入工作人員模塊。窗體界面、源代碼如下
§5.6借閱者服務模塊的實現
借閱者服務窗體的功能主要是圖書的查詢,個人借閱情況查看及個人部分信息的修改。界面圖如下:
5.6.1圖書查詢功能的實現
在本系統中,任何人都有許可權使用查詢功能,不做任何限制。界面如下,
由於實現的查詢功能有多種,如按圖書編號、圖書名稱等欄位進行完全體配查找和部分體配的模糊查找,還有按多個條件進行邏輯與或是邏輯或的多條件查找。其中實現的方法者差不多,所以只給出多條件查找的代碼,如下:
5.6.2借閱者登錄功能的實現
這個功能的實現與工作人員和管理人員登錄功能實現的方法大致一樣,並且還要簡單。是從User表中查到到借閱證號與密碼,看與用戶輸入的是否一致。如果一致,那麼用戶就可查看自已的借閱情況並維護自己的部分信息。源代碼與借閱者登錄界面都略。
5.6.3借閱者借閱情況功能的實現
當借閱者正確登錄到系統後,此功能將被激活,使用戶能查看到自身的借閱情況。在此系統中,信息的顯示一般用ListView來實現,只在較少的情況下用到了DBgrid,因為我覺得ListView更好實現,並能使信息數據對用戶的完全分離。
在這里跟據借閱者的不同要求實現借閱情況的查詢,有檢查所有的借閱情部、某本書的借閱情況、和根據已借閱天數的來查詢。其中根椐借閱天數來查詢更有代表性,有方式一和方式二。以下給出此功能的源代碼
按借閱天數查詢方式一
按借閱天數查詢方式二
5.6.4借閱者個人資料維護功能的實現
此功能實現當前借閱者部份資料的修改,但借書證號和身份類別這樣的信息不允許修改,這是圖書館管理員模塊的功能。在此界面中點擊修改按鈕將出現「修改」窗體(Form8),點擊修改密碼按鈕將出現groupbox8,在這里進行密碼修改。關鍵源代碼如下。
這里給出個人部分信息修改的源代碼:
這里給出密碼修改的源代碼:
5.7工作人員-圖書借閱/歸還模塊的實現
5.7.1工作人員進行圖書借閱功能實現
在這個功能中,工作人員輸入借閱者的借閱證號和所要借閱的圖書的圖書編號,然後點擊借閱按鈕就可進行圖書借閱。考慮到實際中可能會出現只知圖書名而不知圖書編號的情況,在此界面下方加入了一個轉換功能,可以把圖書名稱轉換成圖書編號,再進行圖書借閱。
在借閱完成後會生借閱報表以便借閱者檢查和確認,借閱報表的列印效果如下圖,實現比較簡單,略去實現過程。
5.7.2工作人員進行圖書歸還功能實現
在此功能中,工作人員根據借閱者的借書證號和歸還的圖書編號進行圖書的歸還工作。並且根據現實中可能會出現的只知圖書名不知圖書編號的歸還情況,所以加入了按書籍名稱進行歸還的功能。這個功能是圖書借閱功能中把圖書名稱轉換成圖書編號的一種改進方法,這樣就不用如借閱功能中一樣要先轉換再借閱了。歸還完成後,同樣會列印出歸還報表以便用戶檢查和確認。
5.8圖書館管理員模塊的實現
5.8.1圖書館管理員圖書管理功能的實現
在這個功能中可以在(*圖書編號)中輸入圖書編號,點查找按鈕後就會在各個相應的組件中顯示出信息,或按圖書名稱模糊查找到所要的記錄,在各個相應的組件中顯示第一條記錄的信息,也可在下端的ListView組件中點擊某一條記錄,在各個相應的組件中也會顯示所選記錄的信息。在入庫功能中只要不是相同的圖書編號並且帶*號提示的欄位不為空就可插入新的圖書記錄。刪除則刪除那些Book表中的圖書記錄,如果借出還可依用戶要求連帶刪除owner表中的記錄。因為圖書修改與圖書入庫的功能與工作人員記錄修改和工作人員記錄添加的實現過程一樣,所以下面僅給出刪除功能的源代碼,如下
5.8.2圖書館管理員工作人員和管理員管理功能的實現
在此功能中可以加入工作人員或是管理員,或是修改他們的密碼、許可權。
在此功能中如果選中ListView中的記錄,則在右邊相應的組件中顯示出信息,並且管理員還可對這些記錄進行修改或加入新的記錄。並且也可以點刪除按鈕刪除選中的一條或多條記錄。刪除功能與圖書記錄的刪除一般,所以下面只給出添加與修改的實現過程。
5.8.3圖書館管理員修改圖書類別及統記功能的實現
在此窗體中能對圖書的類別進行刪除,添加和修改,這模塊的功能的實現過程與圖書記錄的刪除,添加和修改一樣的,但是這個窗體還能跟據圖書類別進行統計,還可根據Book表和owner表統計出圖書總數目,庫存圖書數目,借出圖書數目及借閱過期的圖書數目。在這里給出統計圖書總數目,庫存圖書數目,借出圖書數目及借閱過期的圖書數目的實現過程中的幾個函數和過程
5.8.4圖書館管理員借閱者管理功能的實現
查詢借閱者可根據借閱者的借書證號或姓名或身份編號查找到借閱者的信息,也可以實行模糊查找,這個功能的實現與前面圖書查找的實現過程一般,就不再詳細說明。
5.8.5圖書館維護借閱者管理功能的實現
此功能能對借閱者信息進行查看添加、刪除、修改。在這里給出刷新按鈕的實現過程
5.8.6圖書館身份維護功能的實現
這一部分是對借閱者身份進行管理,能對身份進行添加、刪除、修改。並且同樣的在listview中選中某條或多條記錄時會在相應的右邊的組件中顯示出信息。此功能實現過程與前面所敘有雷同,略。
5.8.7圖書館借閱者統計功能的實現
此功能按借閱者身份進行統計,得出具有某種身份的借閱者總數,此種身份的並借閱圖書的借閱者數和所借閱的圖書數,在下面給出實現過程。
5.8.8圖書館統計借閱過期記錄功能的實現
列印出的借閱過期催還報表如下圖所示:
此報表能顯示按借書證號升序排列的借閱信息超過限定時限的信息,其中主要的SQL語句如下:
5.9系統信息顯示的實現
顯過本系統的信息,並且右邊的字向上滾動顯示,主要實現如下:
另外,虛機團上產品團購,超級便宜

❸ 如果sql語句已經達到優化,瓶頸在於數據文件的磁碟io,此時可以怎麼調整

具體問題具體分析,舉例來說明為什麼磁碟IO成瓶頸資料庫的性能急速下降了。

為什麼當磁碟IO成瓶頸之後, 資料庫的性能不是達到飽和的平衡狀態,而是急劇下降。為什麼資料庫的性能有非常明顯的分界點,原因是什麼?

相信大部分做資料庫運維的朋友,都遇到這種情況。 資料庫在前一天性能表現的相當穩定,資料庫的響應時間也很正常,但就在今天,在業務人員反饋業務流量沒有任何上升的情況下,資料庫的變得不穩定了,有時候一個最簡單的insert操作, 需要幾十秒,但99%的insert卻又可以在幾毫秒完成,這又是為什麼了?

dba此時心中有無限的疑惑,到底是什麼原因呢? 磁碟IO性能變差了?還是業務運維人員反饋的流量壓根就不對? 還是資料庫內部出問題?昨天不是還好好的嗎?

當資料庫出現響應時間不穩定的時候,我們在操作系統上會看到磁碟的利用率會比較高,如果觀察仔細一點,還可以看到,存在一些讀的IO. 資料庫伺服器如果存在大量的寫IO,性能一般都是正常跟穩定的,但只要存在少量的讀IO,則性能開始出現抖動,存在大量的讀IO時(排除配備非常高速磁碟的機器),對於在線交易的資料庫系統來說,大概性能就雪崩了。為什麼操作系統上看到的磁碟讀IO跟寫IO所帶來的性能差距這么大呢?

如果親之前沒有注意到上述的現象,親對上述的結論也是懷疑。但請看下面的分解。

在寫這個文章之前,作者閱讀了大量跟的IO相關的代碼,如非同步IO線程的相關的,innodb_buffer池相關的,以及跟讀數據塊最相關的核心函數buf_page_get_gen函數以及其調用的相關子函數。為了將文章寫得通俗點,看起來不那麼累,因此不再一行一行的將代碼解析寫出來。

咱們先來提問題。buf_page_get_gen函數的作用是從Buffer bool裡面讀數據頁,可能存在以下幾種情況。

提問. 數據頁不在buffer bool 裡面該怎麼辦?

回答:去讀文件,將文件中的數據頁載入到buffer pool裡面。下面是函數buffer_read_page的函數,作用是將物理數據頁載入到buffer pool, 圖片中顯示

buffer_read_page函數棧的頂層是pread64(),調用了操作系統的讀函數。


通過解析buf_wait_for_read函數的下層函數,我們知道其實通過首先自旋加鎖pin的方式,超過設定的自旋次數之後,進入等待,等待IO完成被喚醒。這樣節省不停自旋pin時消耗的cpu,但需要付出被喚起時的開銷。

再繼續擴展問題: 如果會話線程A 經過物理IO將數據頁1001讀入buffer之後,他需要修改這個頁,而在會話線程A之後的其他的同樣需要訪問數據頁1001的會話線程,即使在數據頁1001被入讀buffer pool之後,將仍然處於等待中。因為在數據頁上讀取或者更新的時候,同樣需要上鎖,這樣才能保證數據頁並發讀取/更新的一致性。

由此可見,當一個高並發的系統,出現了熱點數據頁需要從磁碟上載入到buffer pool中時,造成的延遲,是難以想像的。因此排在等待熱點頁隊列最後的會話線程最後才得到需要的頁,響應時間也就越長,這就是造成了一個簡單的sql需要執行幾十秒的原因。

再回頭來看上面的問題,mysql資料庫出現性能下降時,可以看到操作系統有讀IO。 原因是,在資料庫對數據頁的更改,是在內存中的,然後通過檢查點線程進行非同步寫盤,這個非同步的寫操作是不堵塞執行sql的會話線程的。所以,即使看到操作系統上有大量的寫IO,資料庫的性能也是很平穩的。但當用戶線程需要查找的數據頁不在buffer pool中時,則會從磁碟上讀取,在一個熱點數據頁不是非常多的情況下,我們設置足夠大的innodb_buffer_pool的size, 基本可以緩存所有的數據頁,因此一般都不會出現缺頁的情況,也就是在操作系統上基本看不到讀的IO。 當出現讀的IO時,原因時在執行buf_read_page_low函數,從磁碟上讀取數據頁到buffer pool, 則資料庫的性能則開始下降,當出現大量的讀IO,資料庫的性能會非常差。

❹ 在SQL2000中,要「設置資料庫允許直接操作系統表」在什麼地方設置

在SQL2000中,要「設置資料庫允許直接操作系統表」可以在企業管理器裡面選擇資料庫伺服器,按右鍵,選擇"屬性",在"伺服器設置"頁面中將"允許對系統目錄直接修改"一項選中。 也可以在查詢分析器里使用如下語句來實現: use master go sp_configure 'allow updates',1 go reconfigure with override go。

SQL Server 2000企業管理器(Enterprise Manager)是用於管理企業級SQL Server 2000或者SQL Server 2000對象的方便而實用的圖形化工具。

用戶可以通過開始菜單或快捷方式啟動企業管理器。啟動後,界面如下圖所示。

Microsoft管理控制台(MMC)用以管理 Microsoft Windows 網路中的不同伺服器應用程序。SQL Server 企業管理器是 Microsoft SQL Server MMC 的管理單元。

SQL Server 企業管理器是 SQL Server 的主要管理工具,它提供了一個遵從 MMC 標準的用戶界面,使用戶得以: 定義 SQL Server 實例組。 將個別伺服器注冊到組中。

為每個已注冊的伺服器配置所有 SQL Server 選項。

在每個已注冊的伺服器中創建並管理所有 SQL Server 資料庫、對象、登錄、用戶和許可權。

在每個已注冊的伺服器上定義並執行所有 SQL Server 管理任務。

通過喚醒調用 SQL 查詢分析器,交互地設計並測試 SQL 語句、批處理和腳本。

喚醒調用為 SQL Server 定義的各種向導。



❺ sql語句里有函數,function,請問是什麼意思我沒見過這種用法。

1、function是SQL的函數
是由一個或多個 Transact-SQL 語句組成的子程序,可用於封裝代碼以便重新使用。Microsoft® SQL Server™ 並不將用戶限制在定義為 Transact-SQL 語言一部分的內置函數上,而是允許用戶創建自己的用戶定義函數。
可使用 CREATE FUNCTION 語句創建、使用 ALTER FUNCTION 語句修改、以及使用 DROP FUNCTION 語句除去用戶定義函數。每個完全合法的用戶定義函數名 (database_name.owner_name.function_name) 必須唯一。
必須被授予 CREATE FUNCTION 許可權才能創建、修改或除去用戶定義函數。不是所有者的用戶在 Transact-SQL 語句中使用某個函數之前,必須先給此用戶授予該函數的適當許可權。若要創建或更改在 CHECK 約束、DEFAULT 子句或計算列定義中引用用戶定義函數的表,還必須具有函數的 REFERENCES 許可權。
在函數中,區別處理導致刪除語句並且繼續在諸如觸發器或存儲過程等模式中的下一語句的 Transact-SQL 錯誤。在函數中,上述錯誤會導致停止執行函數。接下來該操作導致停止喚醒調用該函數的語句。
用戶定義函數的類型

❻ SQLServer企業管理器是干什麼的

SQL Server 企業管理器是 SQL Server 的主要管理工具,它提供了一個遵從 MMC 標準的用戶界面,使用戶得以:

定義 SQL Server 實例組。
將個別伺服器注冊到組中。
為每個已注冊的伺服器配置所有 SQL Server 選項。
在每個已注冊的伺服器中創建並管理所有 SQL Server 資料庫、對象、登錄、用戶和許可權。
在每個已注冊的伺服器上定義並執行所有 SQL Server 管理任務。(作業、備份、計劃、日誌、導入導出、性能監視、、元數據、故障轉移群集等)
通過喚醒調用 SQL 查詢分析器,交互地設計並測試 SQL 語句、批處理和腳本。
喚醒調用為 SQL Server 定義的各種向導。 (復制、數據轉換DTS、web向導等)

❼ sql語句幫助(高分懸賞)

api(application programming interfaces,應用程序介面)
ascii(american standard code for information interchange,美國國家標准信息交換代碼)
atl: activex template library(activex模板庫)
basic:beginner's all-purpose symbolic instruction code(初學者通用指令代碼)
com: component object model(組件對象模式)
dna: distributed internet application(分布式網際網路應用程序)
mfc: microsoft foundation classes(微軟基礎類庫)
sdk(software development kit,軟體開發工具包)

windows
ce(consumer electronics,消費電子)
dcom: distributing component object model,構造物體模塊
dhcp: dynamic host configuration protocol,動態主機分配協議
dmf: distribution media format
gdi(graphics device interface,圖形設備介面)
gui(graphics user interface,圖形用戶界面)
gpf(general protect fault,一般保護性錯誤)
hta: hypertext application,超文本應用程序
inf file(information file,信息文件)
ini file(initialization file,初始化文件)
ndis: network driver interface specification,網路驅動程序介面規范
nt(new technology,新技術)
qos: quality of service,服務質量
rrvp: resource reservation protocol(資源保留協議)
rtos(real time operating systems,實時操作系統)
sbfs: simple boot flag specification,簡單引導標記規范
vefat: virtual file allocation table(虛擬文件分配表)
(vxd,virtual device drivers,虛擬設備驅動程序)
wdm(windows driver model,視窗驅動程序模塊)
winsock: windows socket,視窗套介面
whql: windows hardware quality labs,windows硬體質量實驗室
whs: windows Xing host,視窗腳本程序
zam: zero administration for windows,零管理視窗系統

加密
ecc: elliptic curve crypto(橢圓曲線加密)
set: secure electronic transaction(安全電子交易)

語言
css: cascading style sheets,層疊格式表
dcd: X content deXion for xml: xml文件內容描述
dtd: X type definition,文件類型定義
html(hypertext markup language,超文本標記語言)
jvm: X virtual machine, X虛擬機
oji: open X vm interface,開放X虛擬機介面
sgml: standard generalized markup language,標准通用標記語言
smil: synchronous multimedia integrate language(同步多媒體集成語言)
vrml:virtual reality makeup language,虛擬現實結構化語言
vxml(voice extensible markup language,語音擴展標記語言)
xml: extensible markup language(可擴展標記語言)
xsl: extensible style sheet language(可擴展設計語言)
adimm(advanced al in-line memory moles,高級雙重內嵌式內存模塊)
amr(audio/modem riser;音效/數據機主機板附加直立插卡)
aha(accelerated hub architecture,加速中心架構)
ask ir(amplitude shift keyed infra-red,長波形可移動輸入紅外線)
atx: at extend(擴展型at)
bios(basic input/output system,基本輸入/輸出系統)
cse(configuration space enable,可分配空間)
db: device bay,設備插架
dmi(desktop management interface,桌面管理介面)
eb(expansion bus,擴展匯流排)
eisa(enhanced instry standard architecture,增強形工業標准架構)
emi(electromagnetic interference,電磁干擾)
escd(extended system configuration data,可擴展系統配置數據)
fbc(frame buffer cache,幀緩沖緩存)
firewire(火線,即ieee1394標准)
fsb: front side bus,前置匯流排,即外部匯流排
fwh( firmware hub,固件中心)
gmch(graphics & memory controller hub,圖形和內存控制中心)
gpis(general purpose inputs,普通操作輸入)
ich(input/output controller hub,輸入/輸出控制中心)
ir(infrared ray,紅外線)
irda(infrared ray,紅外線通信介面可進行區域網存取和文件共享)
isa: instry standard architecture,工業標准架構
isa(instruction set architecture,工業設置架構)
mdc(mobile daughter card,移動式子卡)
mrh-r(memory repeater hub,內存數據處理中心)
mrh-s(sdram repeater hub,sdram數據處理中心)
mth(memory transfer hub,內存轉換中心)
ngio(next generation input/output,新一代輸入/輸出標准)
p64h(64-bit pci controller hub,64位pci控制中心)
pcb(printed circuit board,印刷電路板)
pcba(printed circuit board assembly,印刷電路板裝配)
pci: peripheral component interconnect,互連外圍設備
pci sig(peripheral component interconnect special interest group,互連外圍設備專業組)
post(power on self test,加電自測試)
rng(random number generator,隨機數字發生器)
rtc: real time clock(實時時鍾)
kbc(keybroad control,鍵盤控制器)
sap(sideband address port,邊帶定址埠)
sba(side band addressing,邊帶定址)
sma: share memory architecture,共享內存結構
std(suspend to disk,磁碟喚醒)
str(suspend to ram,內存喚醒)
svr: switching voltage regulator(交換式電壓調節)
usb(universal serial bus,通用串列匯流排)
usdm(unified system diagnostic manager,統一系統監測管理器)
vid(voltage identification definition,電壓識別認證)
vrm (voltage regulator mole,電壓調整模塊)
zif: zero insertion force, 零插力
主板技術
gigabyte
acops: automatic cpu overheat prevention system(cpu過熱預防系統)
siv: system information viewer(系統信息觀察)
磐英
esdj(easy setting al jumper,簡化cpu雙重跳線法)
浩鑫
upt(usb、panel、link、tv-out四重介面)
晶元組
acpi(advanced configuration and power interface,先進設置和電源管理)
agp(accelerated graphics port,圖形加速介面)
i/o(input/output,輸入/輸出)
mioc: memory and i/o bridge controller,內存和i/o橋控制器
nbc: north bridge chip(北橋晶元)
piix: pci isa/ide accelerator(加速器)

pse36: page size extension 36-bit,36位頁面尺寸擴展模式
pxb: pci expander bridge,pci增強橋
rcg: ras/cas generator,ras/cas發生器
sbc: south bridge chip(南橋晶元)
smb: system management bus(全系統管理匯流排)
spd(serial presence detect,內存內部序號檢測裝置)
ssb: super south bridge,超級南橋晶元
tdp: triton data path(數據路徑)
tsc: triton system controller(系統控制器)
qpa: quad port acceleration(四介面加速)
3dnow!(3d no waiting)
alu(arithmetic logic unit,算術邏輯單元)
agu(address generation units,地址產成單元)
bga(ball grid array,球狀矩陣排列)
bht(branch prediction table,分支預測表)
bpu(branch processing unit,分支處理單元)
brach pediction(分支預測)
cmos: complementary metal oxide semiconctor,互補金屬氧化物半導體
cisc(complex instruction set computing,復雜指令集計算機)
clk(clock cycle,時鍾周期)
cob(cache on board,板上集成緩存)
cod(cache on die,晶元內集成緩存)
cpga(ceramic pin grid array,陶瓷針型柵格陣列)
cpu(center processing unit,中央處理器)
data forwarding(數據前送)
decode(指令解碼)
dib(al independent bus,雙獨立匯流排)
ec(embedded controller,嵌入式控制器)
embedded chips(嵌入式)
epic(explicitly parallel instruction code,並行指令代碼)
fadd(floationg point addition,浮點加)
fcpga(flip chip pin grid array,反轉晶元針腳柵格陣列)
fdiv(floationg point divide,浮點除)
femms:fast entry/exit multimedia state,快速進入/退出多媒體狀態
fft(fast fourier transform,快速熱歐姆轉換)
fid(fid:frequency identify,頻率鑒別號碼)
fifo(first input first output,先入先出隊列)
flip-chip(晶元反轉)
flop(floating point operations per second,浮點操作/秒)
fmul(floationg point multiplication,浮點乘)
fpu(float point unit,浮點運算單元)
fsub(floationg point subtraction,浮點減)
gvpp(generic visual perception processor,常規視覺處理器)
hl-pbga: 表面黏著,高耐熱、輕薄型塑膠球狀矩陣封裝
ia(intel architecture,英特爾架構)
icu(instruction control unit,指令控制單元)
id:identify,鑒別號碼
idf(intel developer forum,英特爾開發者論壇)
ieu(integer execution units,整數執行單元)
imm: intel mobile mole, 英特爾移動模塊
instructions cache,指令緩存
instruction coloring(指令分類)
ipc(instructions per clock cycle,指令/時鍾周期)
isa(instruction set architecture,指令集架構)
kni(katmai new instructions,katmai新指令集,即sse)
latency(潛伏期)
ldt(lightning data transport,閃電數據傳輸匯流排)
local interconnect(局域互連)
mesi(modified, exclusive, shared, invalid:修改、排除、共享、廢棄)
mmx(multimedia extensions,多媒體擴展指令集)
mmu(multimedia unit,多媒體單元)
mflops(million floationg point/second,每秒百萬個浮點操作)
mhz(million hertz,兆赫茲)
mp(multi-processing,多重處理器架構)
mps(multiprocessor specification,多重處理器規范)
msrs(model-specific registers,特別模塊寄存器)
naoc(no-account overclock,無效超頻)
ni:non-intel,非英特爾
olga(organic land grid array,基板柵格陣列)
ooo(out of order,亂序執行)
pga: pin-grid array(引腳網格陣列),耗電大
post-risc
pr(performance rate,性能比率)
psn(processor serial numbers,處理器序列號)
pib(processor in a box,盒裝處理器)
ppga(plastic pin grid array,塑膠針狀矩陣封裝)
pqfp(plastic quad flat package,塑料方塊平面封裝)
raw(read after write,寫後讀)
register contention(搶占寄存器)
register pressure(寄存器不足)
register renaming(寄存器重命名)
remark(晶元頻率重標識)
resource contention(資源沖突)
retirement(指令引退)
risc(reced instruction set computing,精簡指令集計算機)
sec: single edge connector,單邊連接器
shallow-trench isolation(淺槽隔離)
simd(single instruction multiple data,單指令多數據流)
sio2f(fluorided silicon oxide,二氧氟化硅)
smi(system management interrupt,系統管理中斷)
smm(system management mode,系統管理模式)
smp(symmetric multi-processing,對稱式多重處理架構)
soi: silicon-on-insulator,絕緣體矽片
sonc(system on a chip,系統集成晶元)
spec(system performance evaluation corporation,系統性能評估測試)
sqrt(square root calculations,平方根計算)
sse(streaming simd extensions,單一指令多數據流擴展)
superscalar(超標量體系結構)
tcp: tape carrier package(薄膜封裝),發熱小
throughput(吞吐量)
tlb(translate look side buffers,翻譯旁視緩沖器)
uswc(uncacheabled speculative write combination,無緩沖隨機聯合寫操作)
valu(vector arithmetic logic unit,向量算術邏輯單元)
vliw(very long instruction word,超長指令字)
vpu(vector permutate unit,向量排列單元)
vpu(vector processing units,向量處理單元,即處理mmx、sse等simd指令的地方)
library 庫,程序庫
linkage 連接
to load 裝入,寄存,寫入,載入
location 存儲單元
logger 登記器,記錄器
loop 循環
machine language 機器語言
magnetic storage 磁存儲器
magnetic tape 磁帶
matrix 矩陣
memory 存儲器
message 信息,報文
microcomputer 微型計算機
mole 組件,模塊
monitor 監視器,監督程序,管程
nanosecond 毫微秒
network 網路,網
numeric, numerical 數字的,數值的
octet 八位位組,八位位元組
operator 操作員
optical character reader 光符閱讀機
optical scanner 光掃描器
output 輸出
overflow 溢出,上溢
panel 平板
parameter 參數,參量
perforator 穿孔機
peripheral equipment 外圍設備,外部設備
personal computer 個人計算機
printed circuit 印製電路
printer 列印機
printout 列印輸出
to process 處理
processing unit 處理部件
program 程序
to program 程序編制
programmer 程序設計員
programming 程序設計,程序編制
pulse 脈沖
punch 穿孔
to punch 穿孔
punched card, punch card 穿孔卡片
punched tape, punch tape 穿孔紙帶
punch hole 孔,穿孔
random access 隨機存取
to read 讀
reader 閱讀程序
reading 閱讀
real time 實時
record, register 記錄
rendancy 冗餘
routine 例行程序
selector 選擇器,選擇符
sentinel 標記
sequence 序列,順序
sequential 順序的
serial 串列的.連續的
shift 移位,移數
signal 信號
simulation 模擬
simulator 模擬器,模擬程序
software 軟體,軟設備
sort 分類,排序
sorter 分類人員,分類機,分類程序,排序程序
storage 存儲器
to store 存儲
subroutine, subprogram 子程序
switch 開關
symbol 符號
symbolic language 符號語言
system 系統
tabulator 製表機
teleprinter 電傳打字機
terminal 終端
terminal unit 終端設備
timer 時鍾,精密計時器
time sharing 分時
timing 定時
track 磁軌
transcer 感測器,翻譯機
translator 翻譯程序,翻譯器
to update 更新
Winchester disk drive 溫徹斯特磁碟機,硬碟
working storage 工作存儲器
c2c: card-to-card interleaving,卡到卡交錯存取
cc-numa(cache-coherent non uniform memory access,連貫緩沖非統一內存定址)
chrp(common hardware reference platform,共用硬體平台,ibm為powerpc制定的標准,可以兼容mac os, windows nt, solaris, os/2, linux和aix等多種操作系統)
emp: emergency management port,緊急事件管理埠
icmb: inter-chassis management bus, 內部管理匯流排
mpp(massive parallel processing,巨量平行處理架構)
mux: data path multiplexor,多重路徑數據訪問