《高效能MySQL》筆記(2)

2021-07-13 06:55:43 字數 2326 閱讀 1463

mysql儲存**的四種形式:

1.觸發器

2.儲存過程

3.函式

4.在定時任務中存放**(5.1開始),即事件

儲存過程和儲存函式可以接收引數然後返回值,但是觸發器和事件卻不行

mysql儲存過程:

儲存過程:

是一組為了完成特定功能的sql語句集,經編譯後儲存在資料庫中,使用者通過指定儲存過程的名字並給定引數(如果該儲存過程帶有引數)來呼叫執行它

儲存過程是從mysql5.0開始增加的新功能,大大提高資料庫的處理速度,同時也可以提高資料庫程式設計的靈活性。

過程:封裝起來的若干條語句,呼叫時這些封裝體執行。把此過程儲存到資料庫中即儲存過程

函式:是有乙個返回值的「過程」

過程:沒有返回值的函式

儲存過程的優點:

1.儲存過程增強了sql語言的功能和靈活性(可以sql程式設計,能使用變數,表示式、控制結構體)

2.儲存過程能實現較快的執行速度。(儲存過程要比批處理的執行速度快很多,因為儲存過程是預編譯的。在首次執行乙個儲存過程時查詢,優化器對其進行分析優化,並且給出最終被儲存在系統表中的執行計畫。而批處理的transaction_sql語句在每次執行時都要進行編譯和優化,速度相對慢一些)

3.儲存過程能夠減少網路流量,針對乙個資料庫物件的操作,如果這一操作所涉及的transaction_sql語句被組織儲存過程,那麼當在客戶計算機上呼叫該儲存過程時,網路中傳送的只是該呼叫語句,從而大大增加了網路流量並降低了網路負載。

4.儲存過程可被作為一種安全機制來充分利用。系統管理員通過執行某一儲存過程的許可權進行限制,能夠實現對相應的資料的訪問許可權的限制,避免了非授權使用者對資料的訪問,保證了資料的安全。

5.儲存過程允許標準元件式程式設計。儲存過程被建立後,可以在程式中被多次呼叫,而不必重新編寫該儲存過程的sql語句,而且資料庫專業人員可以隨時對儲存過程進行修改,對應用程式原始碼毫無影響。

儲存過程的基本建立過程:

delimiter //           --這裡是建立儲存過程的呼叫結束標誌和開始標誌

create procedure proc1(引數)    --建立了乙個名字為proc1的儲存過程,不管有沒有引數,都需要加上括號

begin

--儲存過程開始

select * from user                  --要儲存的sql語句

end                             --儲存結束

//                              --約定的結束標誌

儲存過程的呼叫執行過程

call proc1(引數)//(建立儲存過程的時候的約定的結束符號)

儲存過程引數:

in 引數名字  引數型別       --輸入引數的形式

顯示資料庫中所有的儲存過程:

show procedure status;

顯示某個儲存過程的詳細資訊(procbname為儲存過程的名稱)

show create procedure procbname;

刪除儲存過程

drop procedure if exists procbname;

在黑視窗設定輸出介面為指定的字符集:(黑視窗的預設字符集為gbk,無法更改)

set character_set_results=gbk/utf8;

儲存過程的輸入和輸出:

輸入:(獲取一條id等於p的記錄)

create procedure proc1(in p int)

select * from user where id=p;(在這裡可以用begin和end開始和結束,但是要改變結束符號)

輸出:(找出user表中最大的id,並將其賦給p)

create procedure proc2(out p int)

select max(id) into p from user;

執行:call proc2(@p);     --輸入的必須是變數,否則無法成功,也就是一定要帶上@符號,檢視變數值也是一樣

select @p;

輸入輸出:(將p當做輸入引數。判斷其值,然後建立變數賦值,然後列印變數)

delimiter //

create procedure proc6(inout p int)

begin

if p=1 then

set @pg=100;

else

set @pg=200;

end if;

select @pg;

end//

執行:                 --列印的時,要先給變數賦值

set @p=1//

call proc6(@p)//

建立高效能索引 《高效能Mysql》筆記2

crate table people last name varchar 50 not null,first name varchar 50 not null,dob date not null,gender enum m f not null,key last name,first name,do...

讀高效能mysql筆記

效能監控的好工具 newrelic 效能分析的好工具 percona toolkit show variables like slow show full processlist set profiling 1 select from score cal unsuccessed show profi...

高效能Mysql筆記 優化

了解查詢的整個生命週期,清楚每個階段的時間消耗情況 參考select profiling 檢視profiling是否開啟 set profiling 1 開啟profiling show profiles 檢視每條查詢的效能 show profile for query id 檢視query id的...