當前位置:首頁 » 存儲配置 » mysql存儲過程速度

mysql存儲過程速度

發布時間: 2023-09-23 13:41:17

Ⅰ Mysql資料庫新特性之存儲過程入門教程

在MYSQL 中 終於引入了存儲過程這一新特性 這將大大增強MYSQL 的資料庫處理能力 在本文中 將指導讀者快速掌握MYSQL 的存儲過程的基本知識 帶領用戶入門

存儲過程介紹

存儲過程是一組為了完成特定功能的SQL語句集 經編譯後存儲在資料庫中 用戶通過指定存儲過程的名字並給出參數(如果該存儲過程帶有參數)來執行它 存儲過程可由應用程序通過一個調用來執行 而且允許用戶聲明變數 同時 存儲過程可以接收和輸出參數 返回執行存儲過程的狀態值 也可以嵌套調用

存儲過程的優點

作為存儲過程 有以下這些優點

( )減少網路通信量 調用一個行數不多的存儲過程與直接調用SQL語句的網路通信量可能不會有很大的差別 可是如果存儲過程包含上百行SQL語句 那麼其性能絕對比一條一條的調用SQL語句要高得多

( )執行速度更快 存儲過程創建的時候 資料庫已經對其進行了一次解析和優化 其次 存儲過程一旦執行 在內存中就會保留一份這個存儲過程 這樣下次再執行同樣的存儲過程時 可以從內存中直接中讀取

( )更強的安全性 存儲過程是通過向用戶授予許可權(而不是基於表) 它們可以提供對特定數據的訪問 提高代碼安全 比如防止 SQL注入

( ) 業務邏輯可以封裝存儲過程中 這樣不僅容易維護 而且執行效率也高

當然存儲過程也有一些缺點 比如

可移植性方面 當從一種資料庫遷移到另外一種資料庫時 不少的存儲過程的編寫要進行部分修改

存儲過程需要花費一定的學習時間去學習 比如學習其語法等

在MYSQL中 推薦使用MYSQL Query Browswer()這個工具去進行存儲過程的開發和管理 下面分步驟來學習MYSQL中的存儲過程

定義存儲過程的結束符

在存儲過程中 通常要輸入很多SQL語句 而SQL語句中每個語句以分號來結束 因此要告訴存儲過程 什麼位置是意味著整個存儲過程結束 所以我們在編寫存儲過程前 先定義分隔符 我們這里定義 // 為分隔符 我們使用DELIMITER //這樣的語法 就可以定義結束符了 當然你可以自己定義其他喜歡的符號

如何創建存儲過程

下面先看下一個簡單的例子 代碼如下

DELIMITER//CREATEPROCEDURE`p ` ()LANGUAGE SQLDETERMINISTICSQL SECURITY DEFINERMENT A procere BEGINSELECT Hello World ! ;END//

下面講解下存儲過程的組成部分

)首先在定義好終結符後 使用CREATE PROCEDURE+存儲過程名的方法創建存儲過程 LANGUAGE選項指定了使用的語言 這里默認是使用SQL

)DETERMINISTIC關鍵詞的作用是 當確定每次的存儲過程的輸入和輸出都是相同的內容時 可以使用該關鍵詞 否則默認為NOT DETERMINISTIC

) SQL SECURITY關鍵詞 是表示調用時檢查用戶的許可權 當值為INVOKER時 表示是用戶調用該存儲過程時檢查 默認為DEFINER 即創建存儲過程時檢查

) MENT部分是存儲過程的注釋說明部分

lishixin/Article/program/MySQL/201404/30557

Ⅱ mysql 存儲過程

.關於MySQL的存儲過程

存儲過程是資料庫存儲的一個重要的功能,但是MySQL在5.0以前並不支持存儲過程,這使得MySQL在應用上大打折扣。好在MySQL 5.0終於開始已經支持存儲過程,這樣即可以大大提高資料庫的處理速度,同時也可以提高資料庫編程的靈活性。

MySQL存儲過程的創建

(1).格式

MySQL存儲過程創建的格式:CREATE PROCEDURE過程名([過程參數[,...]])
[特性...]過程體

這里先舉個例子:

  • mysql>DELIMITER//

  • mysql>CREATEPROCEDUREproc1(OUTsint)

  • ->BEGIN

  • ->SELECTCOUNT(*)INTOsFROMuser;

  • ->END

  • ->//

  • mysql>DELIMITER;


  • 註:
  • (1)這里需要注意的是DELIMITER //和DELIMITER ;兩句,DELIMITER是分割符的意思,因為MySQL默認以";"為分隔符,如果我們沒有聲明分割符,那麼編譯器會把存儲過程當成SQL語句進行處理,則存儲過程的編譯過程會報錯,所以要事先用DELIMITER關鍵字申明當前段分隔符,這樣MySQL才會將";"當做存儲過程中的代碼,不會執行這些代碼,用完了之後要把分隔符還原。

    (2)存儲過程根據需要可能會有輸入、輸出、輸入輸出參數,這里有一個輸出參數s,類型是int型,如果有多個參數用","分割開。

    (3)過程體的開始與結束使用BEGIN與END進行標識。

Ⅲ mysql中使用存儲過程進行查詢效率高嗎

mysql中使用存儲過程進行查詢效率高嗎
能,存儲過程是在伺服器端運行的。 1、執行速度比普通的SQL語句快 再運行存儲過程前,資料庫已對其進行了語法和句法分析,並給出了優化執行方案。這種已經編譯好的過程可極大地改善SQL語句的性能。

Ⅳ mysql中的函數和存儲過程的區別

1、通常,函數要明確地返回一個結果值;而過程不用。
然而,事實上可以通過OUTPUT參數來返回多個值

*2、函數不會改變系統的狀態(及數據),而過程可能會改變。
即相同的參數值傳入,函數返回的結果每次都是相同的;但過程並不一定。

因此,
3、函數中,不能使用會改變系統狀態及數據的語句,如DELETE、UPDATE、INSERT、ALTER

Ⅳ 如何評估和測試Mysql及oracle資料庫性能

1:伺服器環境

操作系統:Red Hat Enterprise Linux Server release 5.5 (Tikanga)

CPU:Intel(R) Xeon(R) CPU E5607 @ 2.27GHz 8核

內存:16G

Mysql:Ver 14.14 Distrib 5.5.21, for Linux (x86_64)

Oracle:OracleDatabase 11g Enterprise Edition Release

詳細數據測試(操作通過存儲過程完成)

數據插入

50並發Mysql插入性能圖示(橫坐標:當前數據總量,縱坐標:每秒執行次數){平均值:4841.98}

Ⅵ 求大神幫我看看這個mysql存儲過程。我用event調用的時候,運行速度慢的可憐,3個小時仍未完成。

提供過程中涉及的幾個問題的思路:
1 刪除環節:es_stat_logondays_user 表的數據量是多少,數據超過幾十萬以上的話,建議使用truncate table (需要支持的mysql版本)或刪表重建方式(需要許可權支持);
2 查詢環節(這個是最重要的環節):優化下insert 中的select 查詢吧;
其中的s 虛表的子查詢部分先優化下,條件里對欄位使用CONCAT應該是忌諱。

(select DISTINCT v.adminId,v.courseId from view_stattologondays_user v ,(
select admin_id,course_id from es_stu_record
where action_type=6 group by admin_id,course_id) e where CONCAT(ifnull(v.adminId,111),ifnull(v.courseId,222))!= CONCAT(ifnull(e.admin_id,111),ifnull(e.course_id,222))
) s
3 插入環節:es_stat_logondays_user 的索引和外鍵情況如何,嘗試在insert 前加上:
set sql_log_bin = 0;
set unique_checks = 0;
set foreign_key_checks = 0;

Ⅶ mysql存儲過程的if判斷有多個條件該怎麼優化效率

這個應該不會太慢吧,我建議你看一下,你是不是循環做了太多次的插入/更新操作。
mysql默認的配置中,每次事務提交都要寫binlog和redo log,如果循環太多次——比如循環插入10w條記錄——就會非常慢。一般優化思路分兩種:
1 修改 sync_binlog為一個100-1000間的值,讓binlog每隔100-1000個事務後再寫一次;修改innodb_flush_log_at_trx_commit =2; 這么搞的好處是降低了寫log的次數和消耗的時間,缺點是,中間出錯的話,會丟失一部分的binlog和redolog導致無法通過他們來在出問題是恢復生產庫數據。
2 將所有的插入/更新操作放到一個事務中進行。這樣,顯然就只需要一次寫binlong和redolog咯。

熱點內容
手機編寫腳本軟體 發布:2024-11-30 12:41:02 瀏覽:872
學php如何 發布:2024-11-30 12:36:48 瀏覽:857
家庭電腦改網盤伺服器 發布:2024-11-30 12:32:13 瀏覽:105
電腦伺服器組裝系統 發布:2024-11-30 12:32:11 瀏覽:998
在線顯示wifi密碼是什麼 發布:2024-11-30 12:30:53 瀏覽:726
觸動精靈安卓腳本 發布:2024-11-30 12:30:47 瀏覽:80
phpmd5加密代碼 發布:2024-11-30 12:29:35 瀏覽:899
蘋果手機鎖屏怎麼取消密碼 發布:2024-11-30 12:28:08 瀏覽:860
老娘也要當間諜ftp 發布:2024-11-30 12:23:17 瀏覽:131
家裡如何安裝文件伺服器 發布:2024-11-30 12:15:35 瀏覽:352