主頁 > 資料庫 > 資料庫系統(六)---MySQL陳述句及存盤程序

資料庫系統(六)---MySQL陳述句及存盤程序

2020-09-23 16:57:36 資料庫

一、DDL、DML、DCL常用陳述句 

1、DDL(Data Definition Language)資料庫定義語言

(1)資料庫模式定義

#創建資料庫  
create database if exsites db_name;

#選定資料庫
use db_name;

#洗掉資料庫
drop database if exists db_name;

#修改資料庫
alter database db_name set ...;

#展示所創建的資料庫
show databases;

 

(2)表定義    

#創建表
create table test_table
(
s_id int not null auto_increment,
s_name char(50) not null default "hanmei",
s_age int not null,
primary key(s_id),
index index_name(s_name)
);

#洗掉表
drop table if exists test_table; 

#展示表結構
desc test_table;

 

2、DML(data manipulation language)資料庫操作語言

insert into test_table(s_age) values(18);

insert into test_table set s_age=19; #插入部分列值資料

inert ...select...;

#case...when 匹配條件
select s_name as name,s_sex
case
  when  'f' then ‘女’
  else ''
end as sex
from test_table;

#使用內置函式
select count(*) from customers;
select max(cust_id) from customers;
select min(cust_id) from customers;
select sum(cust_id) from customers;
select avg(cust_id) from customers;
 

#交叉連接(笛卡爾積)
select * from tb1 cross join tb2;

#內連接
#---左外連接
select * from stu_info inner join stu_score on stu_info.sno=stu_score.sno;
select stu_info.sno,stu_info.sname,stu_score.sscore from stu_info left join stu_score on stu_info.sno=stu_score.sno;
#---右外連接
select stu_info.sno,stu_info.sname,stu_score.sscore from stu_score right join stu_info on stu_score.sno=stu_info.sno;
 
#比較運算子
select * from customers where cust_id!=2;
select * from customers where cust_id<>2;

#邏輯運算子
#---and 與
select * from customers where cust_id>2 and cust_sex=1;
#---or 或
select * from customers where cust_id>2 or cust_sex=1;
 
#兩者之間 范圍
select * from customers where cust_id between 2 and 4;
select * from customers where cust_id>=2 and cust_id<=4;

#in
select * from customers where cust_id in(2,4);
select * from customers where cust_id=2 or cust_id=4;

#子查詢
select * from stu_info where sno in(select sno from stu_score);
 
#分組查詢
select ssex,count(*)from stu_info group by ssex;
select saddress,ssex,count(*) from stu_info group by saddress,ssex;
select saddress,ssex,count(*) from stu_info group by saddress,ssex with rollup;
 
#having 篩選---過濾分組后的資料
select saddress,ssex ,count(*) from stu_info group by saddress,ssex having count(*)>1;

 

3、DCL(Data Control Language)資料庫控制語言

安全與訪問控制

-- 查看 mysql 資料庫的使用者賬號
select user from mysql.user;

-- 密碼加密
select password(456);

-- 創建用戶
create user 'zhangsan'@'localhost' identified by '123',
'lisi'@'localhost' identified by password '*531E182E2F72080AB0740FE2F2D68
9DBE0146E04';

-- 洗掉用戶賬號
drop user lisi@localhost;

-- 重命名
rename user 'zhangsan'@'localhost' to 'wangwu'@'localhost';

-- 修改密碼
set password for 'wangwu'@'localhost'='*6B4F89A54E2D27ECD7E8DA05B4AB8FD9D1D8B119';

-- 設定權限
grant select n test1.customers o 'wangwu'@'localhost';

-- 創建兩個用戶
grant select,update on test1.customers to 'liming'@'localhost' identified by '123', 'huang'@'localhost' identified by '789';

--執行所有資料庫操作的權限
grant all on test1.* to 'wangwu'@'localhost';

-- 添加用戶的權限
grant create user on *.*to 'wangwu'@'localhost';

-- 權限轉移
grant select,update on test1.customers to 'zhou'@'localhost' identified by '123' with grant option;

-- 權限撤回
revoke select on test1.customers from 'zhou'@'localhost';

 

二、存盤程序   1、存盤程序是一組為了完成某項特定功能的 SQL 陳述句集,其實質上就是一段存盤在資料庫中的代碼,它可以由宣告式的 SQL 陳述句(如 CREATE、UPDATE 和SELECT 等陳述句)和程序式 SQL 陳述句(如 IF…THEN…ELSE 控制結構陳述句)組成,創建的存盤程序保存在資料庫的資料字典中,   使用存盤程序通常具有以下優勢:   1) 可增強 SQL 語言的功能和靈活性;   2) 良好的封裝性;   3) 高性能;   4) 可減少網路流量;   5) 存盤程序可作為一種安全機制來確保資料庫的安全性和資料的完整性,     2、創建存盤程序    2.1)DELIMITER 命令     DELIMITER 命令將 MySQL 陳述句的結束標志臨時修改為其他符號,從而使得 MySQL 服務器可以完整地處理存盤程序體中所有的 SQL 陳述句,而后可通過 DELIMITER 命令再將 MySQL 陳述句的結束標志改回為 MySQL 的默認結束標志,即分號(;),     DELIMITER 命令的語法格式: DELIMITER $$        2.2)創建存盤程序     在 MySQL 中,是使用 CREATE PROCEDURE 陳述句來創建存盤程序,其常用的語法格式是: CREATE PROCEDURE sp_name([proc_parameter[,…]]) Routine_body  
      "sp_name" 用于指定存盤程序的名稱,且默認在當前資料庫中創建;       "proc_parameter" 用于指定存盤程序的引數串列;       "routine_body" 表示存盤程序的主體部分,也稱為存盤程序體,            其中,語法項“proc_parameter”的語法格式是: [IN|OUT|INOUT] param_name type

      IN 輸入引數:表示呼叫者向程序傳入值(傳入值可以是字面量或變數);
      OUT 輸出引數:表示程序向呼叫者傳出值(可以回傳多個值)(傳出值只能是變數);
      INOUT 輸入輸出引數:既表示呼叫者向程序傳入值,又表示程序向呼叫者傳出值(值只能是變數);

   2.3)存盤程序體      區域變數:在存盤程序體中可以宣告區域變數,用來存盤存盤程序體中的臨時結果,在 MySQL 中,可以使用 DECLARE 陳述句來宣告區域變數,并且同時還可以對該區域變數賦予一個初始值,其使用的語法格式是: DECLARE var_name[,…] type [DEFAULT value] 其中,     1)"var_name" 用于指定區域變數的名稱;     2)"type" 用于宣告區域變數的資料型別;     3) DEFAULT 子句用于為區域變數指定一個默認值,若沒有指定,則默認為 NULL, 需要注意的事項如下:       1) 區域變數只能在存盤程序體的 BEGIN…END 陳述句塊中宣告,       2) 區域變數必須在存盤程序體的開頭處宣告,       3) 區域變數的作用范圍僅限于宣告它的 BEGIN…END 陳述句塊,其他陳述句塊中的陳述句不可以使用它,       4) 區域變數不同于用戶變數,兩者的區別是:               區域變數宣告時,在其前面沒有使用@符號,只能被宣告它的 BEGIN…END 陳述句塊中的陳述句所使用;          用戶變數在宣告時,會在其名稱前面使用@符號,同時已宣告的用戶變數存在于整個會話之中       4)  SET 陳述句   在 MySQL 中,可以使用 SET 陳述句為區域變數賦值,語法格式是: SET var_name=expr[,var_name=expr] …     5)  SELECT…INTO 陳述句   在 MySQL 中,可以使用 SELECT…INTO 陳述句把選定列的值直接存盤到區域變數中,語法格式是: SELECT col_name[,…] INTO var_name[,…] table_expr   其中:     “col_name”用于指定列名;     “var_name”用于指定要賦值的變數名;     “table_expr”表示 SELECT 陳述句中的 FROM 子句及后面的語法部分,             注意:存盤程序體中的 SELECT…INTO 陳述句回傳的結果集只能有一行資料,     6)流程控制陳述句     在 MySQL 中,可以在存盤程序體中,使用條件判斷陳述句和回圈陳述句這樣兩類用于控制陳述句流程的程序式 SQL 陳述句,       (1) 條件判斷陳述句 常用的條件判斷陳述句有 IF…THEN…ELSE 陳述句和 CASE 陳述句;       (2) 回圈陳述句 常用的回圈陳述句有 WHILE 陳述句、REPEAR 陳述句和 LOOP 陳述句,此外,回圈陳述句中還可以使用 ITERATE 陳述句,但它只能出現在回圈陳述句的 LOOP、REPEAT 和 WHILE 子句 中,用于表示退出當前回圈,且重新開始一個回圈, eg:     select...into...
mysql> delimiter $$
mysql> CREATE PROCEDURE proc_add_stu(
   -> IN sNo INTEGER,    -> OUT sid int    -> ) mysql> BEGIN #存盤程序開始    -> insert into student(s_no) values(sNo);    -> SELECT LAST_INSERT_ID() into sid; #將選定列的值直接存盤到區域變數中    -> END $$ #存盤程序結束 mysql> delimiter;  #將陳述句的結束符號恢復為分號 mysql> call pro_add_stu('0001');

 

in輸入引數(默認,可省略不寫)
mysql> delimiter $$
mysql> create procedure in_proce(in p_in int)
    -> begin
    ->   select p_in;
    ->   set p_in=0; #區域變數賦值(begin...和end之間)
    ->    select P_in;
    -> end$$
mysql> delimiter ;
 
mysql> set @p_in=1; #全域變數@p_in賦值
 
mysql> call in_param(@p_in); #將全域變數@p_in的值作為引數傳遞給區域變數p_in
+------+
| p_in |
+------+
|    1 |
+------+
 
+------+
| P_in |
+------+
|    0 |
+------+
 
mysql> select @p_in; #輸出全域變數@p_in的結果
+-------+
| @p_in |
+-------+
|     1 |
+-------+

以上可以看出,p_in 在存盤程序中被修改,但并不影響 @p_id 的值,因為前者為區域變數、后者為全域變數,

 

out輸出引數
mysql> delimiter //
mysql> create procedure out_proce(out p_out int)
    ->   begin
    ->     select p_out;
    ->     set p_out=2;
    ->     select p_out;
    ->   end
    -> //
mysql> delimiter ;
 
mysql> set @p_out=1;
 
mysql> call out_proce(@p_out);
+-------+
| p_out |
+-------+
|  NULL |
+-------+
#因為out是向呼叫者輸出引數,不接收輸入的引數,所以存盤程序里的p_out為null
+-------+ | p_out | +-------+ | 2 | +-------+ mysql> select @p_out; #輸出全域變數(用戶變數)結果 +--------+ | @p_out | +--------+ | 2 | +--------+ #呼叫了out_proce存盤程序,輸出引數,改變了p_out變數的值

 

inout輸入引數(盡量少用)
mysql> delimiter $$
mysql> create procedure inout_proce(inout p_inout int)
    ->   begin
    ->     select p_inout;
    ->     set p_inout=2;
    ->     select p_inout;
    ->   end
    -> $$
mysql> delimiter ;
 
mysql> set @p_inout=1;
 
mysql> call inout_proce(@p_inout);
+---------+
| p_inout |
+---------+
|       1 |
+---------+
 
+---------+
| p_inout |
+---------+
|       2 |
+---------+
 
mysql> select @p_inout;
+----------+
| @p_inout |
+----------+
|        2 |
+----------+
#呼叫了inout_param存盤程序,接受了輸入的引數,也輸出引數,改變了變數

 

變數作用域

  內部的變數在其作用域范圍內享有更高的優先權,當執行到 end,變數時,內部變數消失,此時已經在其作用域外,變數不再可見了,應為在存盤程序外再也不能找到這個申明的變數,但是你可以通過 out 引數或者將其值指派給會話變數來保存其值,

mysql > DELIMITER //
mysql > CREATE PROCEDURE proc3()  
     -> begin 
     -> declare x1 varchar(5) default 'outer';  
     -> begin 
     -> declare x1 varchar(5) default 'inner';  
      -> select x1;  
      -> end;  
       -> select x1;  
     -> end;  
     -> //
mysql > DELIMITER ;

 

條件陳述句

mysql > DELIMITER // 
mysql > CREATE PROCEDURE proc2(IN parameter int)  
     -> begin 
     -> declare var int;  
     -> set var=parameter+1;  
     -> if var=0 then 
     -> insert into t values(17);  
     -> end if;  
     -> if parameter=0 then 
     -> update t set s1=s1+1;  
     -> else 
     -> update t set s1=s1+2;  
     -> end if;  
     -> end;  
     -> //  
mysql > DELIMITER ;

 

回圈陳述句

mysql > DELIMITER // 
mysql > CREATE PROCEDURE proc4()  
     -> begin 
     -> declare var int;  
     -> set var=0;  
     -> while var<6 do  
     -> insert into t values(var);  
     -> set var=var+1;  
     -> end while;  
     -> end;  
     -> //  
mysql > DELIMITER ;
     2.5) 洗掉存盤程序     DROP PROCEDURE[IF EXISTS] sp_name 其中,“sp_name”用于指定要洗掉的存盤程序的名稱,      2.4)游標    游標是一個被 SELECT 陳述句檢索出來的結果集,即,游標可以遍歷回傳的多行結果,   在 MySQL 中,使用游標的具體步驟如下:   (1) 宣告游標 DECLARE cursor_name CURSOR FOR select_statement 其中,     “cursor_name”用于指定要創建的游標的名稱,其命名規則與表名相同;     “select_statement”用于指定一個 SELECT 陳述句,其會回傳一行或 多行的資料,且需注意此處的 SELECT 陳述句不能有 INTO 子句,   (2) 打開游標 OPEN cursor_name   其中,“cursor_name”用于指定要打開的游標,   (3) 讀取資料 FETCH cursor_name INTO var_name[,var_name]…   其中,“cursor_name”用于指定已打開的游標;語法項“var_name”用于指定存放資料的變數名,   (4) 關閉游標 CLOSE cursor_name 其中,語法項“cursor_name”用于要關閉的游標,        (5)在使用游標程序中,需要注意以下幾點:     1) 游標只能用于存盤程序或存盤函式中,不能單獨在查詢操作中使用,     2) 在存盤程序或存盤函式中可以定義多個游標,但是在一個 BEGIN…END 語 句塊中每一個游標的名字必須是唯一的,     3) 游標不是一條 SELECT 陳述句,是被 SELECT 陳述句檢索出來的結果集, 模塊四 呼叫存盤程序 CALL sp_name[parameter[,…]] CALL sp_name[()] 在此語法格式中:        語法項“sp_name”用于指定被呼叫的存盤程序的名稱,如果要呼叫某個特 定資料庫的存盤程序,則需要在前面加上該資料庫的名稱,        語法項“parameter”用于指定呼叫存盤程序所要使用的引數,呼叫陳述句中引數的個數必須等于存盤程序的引數個數,     當呼叫沒有引數的存盤程序時,使用 CALL sp_name()陳述句與使用 CALL sp_name 陳述句是相同的,  eg:
create procedure p1()
begin
    declare id int;
    declare name varchar(15);
    -- 宣告游標
    declare mc cursor for select * from class;
    -- 打開游標
    open mc;
    -- 獲取結果
    fetch mc into id,name;
    -- 這里是為了顯示獲取結果
    select id,name;
    -- 關閉游標
    close mc;
    
end;

 

  三、存盤函式   1、存盤函式和存盤程序的區別:   (1) 存盤函式不能擁有輸出引數,這是因為存盤函式自身就是輸出引數;而存盤程序可以擁有輸出引數,   (2) 可以直接對存盤函式進行呼叫,且不需要使用 CALL 陳述句;而對存盤程序 的呼叫,需要使用 CALL 陳述句,   (3) 存盤函式中必須包含一條 RETURN 陳述句,而這條特殊的 SQL 陳述句不允許包含于存盤程序中,     2、創建存盤函式 CREATE FUNCTION sp_name([func_parameter[,…]]) RETURNS type routine_body 其中,語法項“func_parameter”的語法格式是: param_name type      在此語法格式中:     (1) 語法項“sp_name”用于指定存盤函式的名稱,需注意,存盤函式不能與存 儲程序具有相同的名字,     (2) 語法項“func_parameter”用于指定存盤函式的引數,這里的引數只有名稱 和型別,不能指定關鍵字“IN”“OUT”和“INOUT”,     (3) RETURNS 子句用于宣告存盤函式回傳值的資料型別,其中 type 用于指定 回傳值的資料型別,     (4) 語法項“routine_body”用于指定存盤函式的主體部分,也稱為存盤函式體, 所有在存盤程序中使用的 SQL 陳述句在存盤函式中同樣也適用,包括前面所介紹的區域變數、SET 陳述句,流程控制陳述句、游標等,但是,存盤函式體中還必須包含一個 RETURN value 陳述句,其中 value 用于指定存盤函式的回傳值,  eg:
#洗掉已經存在的存盤函式
DROP FUNCTION IF EXISTS func_stu;

#創建存盤函式(宣告回傳型別為varChar(50))
CREATE FUNCTION func_stu(in_id INT) RETURNS VARCHAR(50)
BEGIN
    DECLARE o_name VARCHAR(50); #宣告區域變數
    SELECT name INTO o_name FROM tb_stu WHERE id = in_id; #tb_stu指事先創建好的資料庫
    RETURN o_name;
END;

 

     3、呼叫存盤函式   成功創建存盤函式后,就可以如同呼叫系統內置函式一樣,使用關鍵字 SELECT 對其進行呼叫,語法格式是: SELECT sp_name([func_parameter[,…]])  eg:
SELECT func_stu(1);

 

    4、洗掉存盤函式   在 MySQL 中,可以使用 DROP FUNCTION 陳述句來實作,語法格式: DROP FUNCTION[IF EXISTS] sp_name     其中,語法項“sp_name”指定要洗掉的存盤函式的名稱, eg:
DROP FUNCTION IF EXISTS func_stu;

 

    5、修改存盤函式

ALTER FUNCTION func_name [characteristic ...]
characteristic:
    COMMENT 'string'
  | LANGUAGE SQL
  | { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA }
  | SQL SECURITY { DEFINER | INVOKER }

 

感謝閱讀,如需轉載,請注明出處,謝謝!https://www.cnblogs.com/huyangshu-fs/p/11669708.html 

轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/113123.html

標籤:MySQL

上一篇:資料庫系統(五)---MySQL基礎

下一篇:Mysql Join-連接查詢(上)

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • GPU虛擬機創建時間深度優化

    **?桔妹導讀:**GPU虛擬機實體創建速度慢是公有云面臨的普遍問題,由于通常情況下創建虛擬機屬于低頻操作而未引起業界的重視,實際生產中還是存在對GPU實體創建時間有苛刻要求的業務場景。本文將介紹滴滴云在解決該問題時的思路、方法、并展示最終的優化成果。 從公有云服務商那里購買過虛擬主機的資深用戶,一 ......

    uj5u.com 2020-09-10 06:09:13 more
  • 可編程網卡芯片在滴滴云網路的應用實踐

    **?桔妹導讀:**隨著云規模不斷擴大以及業務層面對延遲、帶寬的要求越來越高,采用DPDK 加速網路報文處理的方式在橫向縱向擴展都出現了局限性。可編程芯片成為業界熱點。本文主要講述了可編程網卡芯片在滴滴云網路中的應用實踐,遇到的問題、帶來的收益以及開源社區貢獻。 #1. 資料中心面臨的問題 隨著滴滴 ......

    uj5u.com 2020-09-10 06:10:21 more
  • 滴滴資料通道服務演進之路

    **?桔妹導讀:**滴滴資料通道引擎承載著全公司的資料同步,為下游實時和離線場景提供了必不可少的源資料。隨著任務量的不斷增加,資料通道的整體架構也隨之發生改變。本文介紹了滴滴資料通道的發展歷程,遇到的問題以及今后的規劃。 #1. 背景 資料,對于任何一家互聯網公司來說都是非常重要的資產,公司的大資料 ......

    uj5u.com 2020-09-10 06:11:05 more
  • 滴滴AI Labs斬獲國際機器翻譯大賽中譯英方向世界第三

    **桔妹導讀:**深耕人工智能領域,致力于探索AI讓出行更美好的滴滴AI Labs再次斬獲國際大獎,這次獲獎的專案是什么呢?一起來看看詳細報道吧! 近日,由國際計算語言學協會ACL(The Association for Computational Linguistics)舉辦的世界最具影響力的機器 ......

    uj5u.com 2020-09-10 06:11:29 more
  • MPP (Massively Parallel Processing)大規模并行處理

    1、什么是mpp? MPP (Massively Parallel Processing),即大規模并行處理,在資料庫非共享集群中,每個節點都有獨立的磁盤存盤系統和記憶體系統,業務資料根據資料庫模型和應用特點劃分到各個節點上,每臺資料節點通過專用網路或者商業通用網路互相連接,彼此協同計算,作為整體提供 ......

    uj5u.com 2020-09-10 06:11:41 more
  • 滴滴資料倉庫指標體系建設實踐

    **桔妹導讀:**指標體系是什么?如何使用OSM模型和AARRR模型搭建指標體系?如何統一流程、規范化、工具化管理指標體系?本文會對建設的方法論結合滴滴資料指標體系建設實踐進行解答分析。 #1. 什么是指標體系 ##1.1 指標體系定義 指標體系是將零散單點的具有相互聯系的指標,系統化的組織起來,通 ......

    uj5u.com 2020-09-10 06:12:52 more
  • 單表千萬行資料庫 LIKE 搜索優化手記

    我們經常在資料庫中使用 LIKE 運算子來完成對資料的模糊搜索,LIKE 運算子用于在 WHERE 子句中搜索列中的指定模式。 如果需要查找客戶表中所有姓氏是“張”的資料,可以使用下面的 SQL 陳述句: SELECT * FROM Customer WHERE Name LIKE '張%' 如果需要 ......

    uj5u.com 2020-09-10 06:13:25 more
  • 滴滴Ceph分布式存盤系統優化之鎖優化

    **桔妹導讀:**Ceph是國際知名的開源分布式存盤系統,在工業界和學術界都有著重要的影響。Ceph的架構和演算法設計發表在國際系統領域頂級會議OSDI、SOSP、SC等上。Ceph社區得到Red Hat、SUSE、Intel等大公司的大力支持。Ceph是國際云計算領域應用最廣泛的開源分布式存盤系統, ......

    uj5u.com 2020-09-10 06:14:51 more
  • es~通過ElasticsearchTemplate進行聚合~嵌套聚合

    之前寫過《es~通過ElasticsearchTemplate進行聚合操作》的文章,這一次主要寫一個嵌套的聚合,例如先對sex集合,再對desc聚合,最后再對age求和,共三層嵌套。 Aggregations的部分特性類似于SQL語言中的group by,avg,sum等函式,Aggregation ......

    uj5u.com 2020-09-10 06:14:59 more
  • 爬蟲日志監控 -- Elastc Stack(ELK)部署

    傻瓜式部署,只需替換IP與用戶 導讀: 現ELK四大組件分別為:Elasticsearch(核心)、logstash(處理)、filebeat(采集)、kibana(可視化) 下載均在https://www.elastic.co/cn/downloads/下tar包,各組件版本最好一致,配合fdm會 ......

    uj5u.com 2020-09-10 06:15:05 more
最新发布
  • day02-2-商鋪查詢快取

    功能02-商鋪查詢快取 3.商鋪詳情快取查詢 3.1什么是快取? 快取就是資料交換的緩沖區(稱作Cache),是存盤資料的臨時地方,一般讀寫性能較高。 快取的作用: 降低后端負載 提高讀寫效率,降低回應時間 快取的成本: 資料一致性成本 代碼維護成本 運維成本 3.2需求說明 如下,當我們點擊商店詳 ......

    uj5u.com 2023-04-20 08:33:24 more
  • MySQL中binlog備份腳本分享

    關于MySQL的二進制日志(binlog),我們都知道二進制日志(binlog)非常重要,尤其當你需要point to point災難恢復的時侯,所以我們要對其進行備份。關于二進制日志(binlog)的備份,可以基于flush logs方式先切換binlog,然后拷貝&壓縮到到遠程服務器或本地服務器 ......

    uj5u.com 2023-04-20 08:28:06 more
  • day02-短信登錄

    功能實作02 2.功能01-短信登錄 2.1基于Session實作登錄 2.1.1思路分析 2.1.2代碼實作 2.1.2.1發送短信驗證碼 發送短信驗證碼: 發送驗證碼的介面為:http://127.0.0.1:8080/api/user/code?phone=xxxxx<手機號> 請求方式:PO ......

    uj5u.com 2023-04-20 08:27:27 more
  • 快取與資料庫雙寫一致性幾種策略分析

    本文將對幾種快取與資料庫保證資料一致性的使用方式進行分析。為保證高并發性能,以下分析場景不考慮執行的原子性及加鎖等強一致性要求的場景,僅追求最終一致性。 ......

    uj5u.com 2023-04-20 08:26:48 more
  • sql陳述句優化

    問題查找及措施 問題查找 需要找到具體的代碼,對其進行一對一優化,而非一直把關注點放在服務器和sql平臺 降低簡化每個事務中處理的問題,盡量不要讓一個事務拖太長的時間 例如檔案上傳時,應將檔案上傳這一步放在事務外面 微軟建議 4.啟動sql定時執行計劃 怎么啟動sqlserver代理服務-百度經驗 ......

    uj5u.com 2023-04-20 08:26:35 more
  • 云時代,MySQL到ClickHouse資料同步產品對比推薦

    ClickHouse 在執行分析查詢時的速度優勢很好的彌補了MySQL的不足,但是對于很多開發者和DBA來說,如何將MySQL穩定、高效、簡單的同步到 ClickHouse 卻很困難。本文對比了 NineData、MaterializeMySQL(ClickHouse自帶)、Bifrost 三款產品... ......

    uj5u.com 2023-04-20 08:26:29 more
  • sql陳述句優化

    問題查找及措施 問題查找 需要找到具體的代碼,對其進行一對一優化,而非一直把關注點放在服務器和sql平臺 降低簡化每個事務中處理的問題,盡量不要讓一個事務拖太長的時間 例如檔案上傳時,應將檔案上傳這一步放在事務外面 微軟建議 4.啟動sql定時執行計劃 怎么啟動sqlserver代理服務-百度經驗 ......

    uj5u.com 2023-04-20 08:25:13 more
  • Redis 報”OutOfDirectMemoryError“(堆外記憶體溢位)

    Redis 報錯“OutOfDirectMemoryError(堆外記憶體溢位) ”問題如下: 一、報錯資訊: 使用 Redis 的業務介面 ,產生 OutOfDirectMemoryError(堆外記憶體溢位),如圖: 格式化后的報錯資訊: { "timestamp": "2023-04-17 22: ......

    uj5u.com 2023-04-20 08:24:54 more
  • day02-2-商鋪查詢快取

    功能02-商鋪查詢快取 3.商鋪詳情快取查詢 3.1什么是快取? 快取就是資料交換的緩沖區(稱作Cache),是存盤資料的臨時地方,一般讀寫性能較高。 快取的作用: 降低后端負載 提高讀寫效率,降低回應時間 快取的成本: 資料一致性成本 代碼維護成本 運維成本 3.2需求說明 如下,當我們點擊商店詳 ......

    uj5u.com 2023-04-20 08:24:03 more
  • day02-短信登錄

    功能實作02 2.功能01-短信登錄 2.1基于Session實作登錄 2.1.1思路分析 2.1.2代碼實作 2.1.2.1發送短信驗證碼 發送短信驗證碼: 發送驗證碼的介面為:http://127.0.0.1:8080/api/user/code?phone=xxxxx<手機號> 請求方式:PO ......

    uj5u.com 2023-04-20 08:23:11 more