主頁 > 資料庫 > Mysql資料庫 深度知識點

Mysql資料庫 深度知識點

2020-09-24 06:03:20 資料庫

停止命令:net stop mysql 啟動命令:net start mysql  

mysql登錄命令

mysql -h ip -P 埠 -u 用戶名 -p   mysql --version 或者mysql -V用于在未登錄情況下,查看本機mysql版本 select version();:登錄情況下,查看鏈接的庫版本   顯示所有資料庫:show databases; 進入指定的庫:use 庫名; 顯示當前庫中所有的表:show tables; 查看其他庫中所有的表:show tables from 庫名; 查看表的創建陳述句:show create table 表名; 查看表結構:desc 表名; 查看當前所在庫:select database();  

mysql語法規范

  1. 不區分大小寫,但建議關鍵字大寫,表名、列名小寫
  2. 每條命令最好用英文分號結尾
  3. 每條命令根據需要,可以進行縮進或換行
  4. 注釋
    • 單行注釋:#注釋文字
    • 單行注釋:-- 注釋文字 ,注意, 這里需要加空格
    • 多行注釋:/ **注釋文字 **/

SQL的語言分類

  • DQL(Data Query Language):資料查詢語言 select 相關陳述句
  • DML(Data Manipulate Language):資料操作語言 insert 、update、delete 陳述句
  • DDL(Data Define Languge):資料定義語言 create、drop、alter 陳述句
  • TCL(Transaction Control Language):事務控制語言 set autocommit=0、start transaction、savepoint、commit、rollback
  主要包括以下五大類 整數型別:bit、bool、tinyint、smallint、mediumint、int、bigint 浮點數型別:float、double、decimal 字串型別:char、varchar、tinyblob、blob、mediumblob、longblob、tinytext、text、mediumtext、longtext 日期型別:Date、DateTime、TimeStamp、Time、Year 其他資料型別:暫不介紹,用的比較少,  

型別(n)說明

在開發中,我們會碰到有些定義整型的寫法是int(11),這種寫法個人感覺在開發程序中沒有什么用途,不過還是來說一下,int(N)我們只需要記住兩點:
  • 無論N等于多少,int永遠占4個位元組
  • N表示的是顯示寬度,不足的用0補足,超過的無視長度而直接顯示整個數字,但這要整型設定了unsigned zerofill才有效
  decimal采用的是四舍五入  float和double采用的是四舍六入五成雙 什么是四舍六入五成雙?
就是5以下舍棄5以上進位,如果需要處理數字為5的時候,需要看5后面是否還有不為0的任何數字,如果有,則直接進位,如果沒有,需要看5前面的數字,若是奇數則進位,若是偶數則將5舍掉
char型別占用固定長度,如果存放的資料為固定長度的建議使用char型別,如:手機號碼、身份證等固定長度的資訊

資料型別選擇的一些建議

  • 選小不選大:一般情況下選擇可以正確存盤資料的最小資料型別,越小的資料型別通常更快,占用磁盤,記憶體和CPU快取更小,
  • 簡單就好:簡單的資料型別的操作通常需要更少的CPU周期,例如:整型比字符操作代價要小得多,因為字符集和校對規則(排序規則)使字符比整型比較更加復雜,
 
  • 盡量避免NULL:盡量制定列為NOT NULL,除非真的需要NULL型別的值,有NULL的列值會使得索引、索引統計和值比較更加復雜,
  • 浮點型別的建議統一選擇decimal
  • 記錄時間的建議使用int或者bigint型別,將時間轉換為時間戳格式,如將時間轉換為秒、毫秒,進行存盤,方便走索引
 

權限生效時間

用戶及權限資訊放在庫名為mysql的庫中,mysql啟動時,這些內容被讀進記憶體并且從此時生效,所以如果通過直接操作這些表來修改用戶及權限資訊的,需要重啟mysql或者執行flush privileges;才可以生效, 用戶登錄之后,mysql會和當前用戶之間創建一個連接,此時用戶相關的權限資訊都保存在這個連接中,存放在記憶體中,此時如果有其他地方修改了當前用戶的權限,這些變更的權限會在下一次登錄時才會生效,

創建用戶

語法: create user 用戶名[@主機名] [identified by '密碼'];
說明:
  1. 主機名默認值為%,表示這個用戶可以從任何主機連接mysql服務器
  2. 密碼可以省略,表示無密碼登錄
通過修改mysql.user表修改密碼 use mysql; update user set authentication_string = password('321') where user = 'test1' and host = '%'; flush privileges;   給用戶授權: grant privileges ON database.table TO 'username'[@'host'] [with grant option]   grant命令說明:
  • priveleges (權限串列),可以是all,表示所有權限,也可以是select、update等權限,多個權限之間用逗號分開,
  • ON 用來指定權限針對哪些庫和表,格式為資料庫.表名 ,點號前面用來指定資料庫名,點號后面用來指定表名,*.* 表示所有資料庫所有表,
  • TO 表示將權限賦予某個用戶, 格式為username@host,@前面為用戶名,@后面接限制的主機,可以是IP、IP段、域名以及%,%表示任何地方,
  • WITH GRANT OPTION 這個選項表示該用戶可以將自己擁有的權限授權給別人,注意:經常有人在創建操作用戶的時候不指定WITH GRANT OPTION選項導致后來該用戶不能使用GRANT命令創建用戶或者給其它用戶授權, 備注:可以使用GRANT重復給用戶添加權限,權限疊加,比如你先給用戶添加一個select權限,然后又給用戶添加一個insert權限,那么該用戶就同時擁有了select和insert權限,

查看用戶有哪些權限

show grants for '用戶名'[@'主機'] show grants -- 查看當前用戶的權限 撤銷用戶的權限:revoke privileges ON database.table FROM '用戶名'[@'主機']; 洗掉用戶: 1.drop user '用戶名'[@‘主機’] 2.delete from user where user='用戶名' and host='主機';    

授權原則說明

  • 只授予能滿足需要的最小權限,防止用戶干壞事,比如用戶只是需要查詢,那就只給select權限就可以了,不要給用戶賦予update、insert或者delete權限
  • 創建用戶的時候限制用戶的登錄主機,一般是限制成指定IP或者內網IP段
  • 初始化資料庫的時候洗掉沒有密碼的用戶,安裝完資料庫的時候會自動創建一些用戶,這些用戶默認沒有密碼
  • 為每個用戶設定滿足密碼復雜度的密碼
  • 定期清理不需要的用戶,回收權限或者洗掉用戶
 

總結

  1. 通過命令的方式操作用戶和權限不需要重繪,下次登錄自動生效
  2. 通過操作mysql庫中表的方式修改、用戶資訊,需要呼叫flush privileges;重繪一下,下次登錄自動生效
  3. mysql識別用戶身份的方式是:用戶名+主機
  4. 本文中講到的一些指令中帶主機的,主機都可以省略,默認值為%,表示所有機器
  5. mysql中用戶和權限的資訊在庫名為mysql的庫中
   

修改列

alter table 表名 modify column 列名 新型別 [約束]; 或者 alter table 表名 change column 列名 新列名 新型別 [約束]; 2種方式區別:modify不能修改列名,change可以修改列名  
delete單表洗掉
delete [別名] from 表名 [[as] 別名] [where條件];
注意: 如果無別名的時候,表名就是別名 如果有別名,delete后面必須寫別名 如果沒有別名,delete后面的別名可以省略不寫,
示例
-- 洗掉test1表所有記錄delete from test1; -- 洗掉test1表所有記錄delete test1 from test1; -- 有別名的方式,洗掉test1表所有記錄delete t1 from test1 t1; -- 有別名的方式洗掉滿足條件的記錄delete t1 from test1 t1 where t1.a>100;
多表洗掉
可以同時洗掉多個表中的記錄,語法如下:
delete [別名1,別名2] from 表1 [[as] 別名1],表2 [[as] 別名2] [where條件];
說明: 別名可以省略不寫,但是需要在delete后面跟上表名,多個表名之間用逗號隔開,
示例1
delete t1 from test1 t1,test2 t2 where t1.a=t2.c2;
洗掉test1表中的記錄,條件是這些記錄的欄位a在test.c2中存在的記錄
 

drop,truncate,delete區別

  • drop (洗掉表):洗掉內容和定義,釋放空間,簡單來說就是把整個表去掉,以后要新增資料是不可能的,除非新增一個表, drop陳述句將洗掉表的結構被依賴的約束(constrain),觸發器(trigger)索引(index),依賴于該表的存盤程序/函式將被保留,但其狀態會變為:invalid, 如果要洗掉表定義及其資料,請使用 drop table 陳述句,
  • truncate (清空表中的資料):洗掉內容、釋放空間但不洗掉定義(保留表的資料結構),與drop不同的是,只是清空表資料而已, 注意:truncate不能洗掉具體行資料,要刪就要把整個表清空了,
  • delete (洗掉表中的資料):delete 陳述句用于洗掉表中的行,delete陳述句執行洗掉的程序是每次從表中洗掉一行,并且同時將該行的洗掉操作作為事務記錄在日志中保存,以便進行進行回滾操作, truncate與不帶where的delete :只洗掉資料,而不洗掉表的結構(定義) truncate table 洗掉表中的所有行,但表結構及其列、約束、索引等保持不變, 對于由foreign key約束參考的表,不能使用truncate table ,而應使用不帶where子句的delete陳述句,由于truncate table 記錄在日志中,所以它不能激活觸發器, delete陳述句是資料庫操作語言(dml),這個操作會放到 rollback segement 中,事務提交之后才生效;如果有相應的 trigger,執行的時候將被觸發, truncate、drop 是資料庫定義語言(ddl),操作立即生效,原資料不放到 rollback segment 中,不能回滾,操作不觸發 trigger, 如果有自增列,truncate方式洗掉之后,自增列的值會被初始化,delete方式要分情況(如果資料庫被重啟了,自增列值也會被初始化,資料庫未被重啟,則不變)
  • 如果要洗掉表定義及其資料,請使用 drop table 陳述句
  • 安全性:小心使用 drop 和 truncate,尤其沒有備份的時候,否則哭都來不及
  • 洗掉速度,一般來說: drop> truncate > delete
drop truncate delete  
條件洗掉 不支持 不支持 支持
洗掉表結構 支持 不支持 不支持
事務的方式洗掉 不支持 不支持 支持
觸發觸發器
別名中有特殊符號的,比如空格,此時別名必須用引號引起來,   不等于符號的使用: <> 這個是最早的用法, !=是后來才加上的, 兩者意義相同,在可移植性上前者優于后者 故而sql陳述句中盡量使用<>來做不等判斷    

 

like(模糊查詢)

select 列名 from 表名 where 列 like pattern;
pattern中可以包含通配符,有以下通配符: %:表示匹配任意一個或多個字符 _:表示匹配任意一個字符,

 

查詢運算子、like、between and、in、not in對NULL值查詢不起效  

<=>(安全等于)

<=>:既可以判斷NULL值,又可以判斷普通的數值,可讀性較低,用得較少  

總結

  • like中的%可以匹配一個到多個任意的字符,_可以匹配任意一個字符
  • 空值查詢需要使用IS NULL或者IS NOT NULL,其他查詢運算子對NULL值無效
  • 建議創建表的時候,盡量設定表的欄位不能為空,給欄位設定一個默認值
  • <=>(安全等于)玩玩可以,建議少使用
語法: select 列 from 表 limit [offset,] count;
說明: offset:表示偏移量,通俗點講就是跳過多少行,offset可以省略,默認為0,表示跳過0行;范圍:[0,+∞), count:跳過offset行之后開始取資料,取count行記錄;范圍:[0,+∞), limit中offset和count的值不能用運算式,
 

limit中不能使用運算式,limit后面的2個數字不能為負數

 

欄位存在相同的值,當排序程序中存在相同的值時,沒有其他排序規則時,mysql懵逼了,不知道怎么排序了;  建議:分頁排序時,排序不要有二義性,二義性情況下可能會導致分頁結果亂序,可以在后面追加一個主鍵排序 where 多欄位同時限制: SELECT user_id 用戶id, price 最大金額, the_year 年份 FROM t_order t1 WHERE (t1.user_id , t1.price) IN (SELECT t.user_id, MAX(t.price) FROM t_order t GROUP BY t.user_id); 現在我們來討論java輸出的順序為何和sql不一致?
上面java代碼中兩個表的連接查詢使用了嵌套回圈,外回圈每執行一次,內回圈的表都會全部遍歷一次,如果放到mysql中,就相當于內標全部掃描了一次(一次全表io讀取操作),主表(外回圈)如果有n條資料,那么從表就需要全表掃描n次,表的資料是存盤在磁盤中,每次全表掃描都需要做io操作,io操作是最耗時間的,如果mysql按照上面的java方式實作,那效率肯定很低,
那mysql是如何優化的呢?
msql內部使用了一個記憶體快取空間,就叫他join_buffer吧,先把外回圈的資料放到join_buffer中,然后對從表進行遍歷,從表中取一條資料和join_buffer的資料進行比較,然后從表中再取第2條和join_buffer資料進行比較,直到從表遍歷完成,使用這方方式來減少從表的io掃描次數,當join_buffer足夠大的時候,大到可以存放主表所有資料,那么從表只需要全表掃描一次(即只需要一次全表io讀取操作), mysql中這種方式叫做Block Nested Loop,     欄位值為NULL的時候,not in查詢有大坑,這個要注意 建議創建表的時候,列不允許為空  

delimiter關鍵字  sql陳述句結束符

delimiter用來設定結束符,當mysql執行腳本的時候,遇到結束符的時候,會把結束符前面的所有陳述句作為一個整體運行,存盤程序中的腳本有多個sql,但是需要作為一個整體運行,所以此處用到了delimiter   /*在執行程序中出任何例外設定hasSqlError為TRUE*/ DECLARE CONTINUE HANDLER FOR SQLEXCEPTION SET hasSqlError=TRUE; 根據hasSqlError判斷是否有例外,做回滾和提交操作     mysql使用binlog和relaylog記錄資料庫的變化 binlog有三種格式:ROW STATEMENT MIXED ,ROW記錄national資料被修改了,修改成了什么樣子;STATEMENT 記錄修改的sql到binlog;MIXED就是以上兩種模式的混合, binlog是一個二進制檔案,決議binlog有兩種方式: 1.在命令列使用,show binlog events in 'binlog-filename';方式查看 2.下載分析binlog,然后通過mysqlbinlog工具進行決議     扇區:磁盤存盤的最小單位,扇區一般大小為512Byte 磁盤塊:檔案系統與磁盤互動的最小單位(計算機系統讀寫磁盤的最小單位),一個磁盤塊由連續幾個扇區組成,塊一般大小為4KB   二分法查找資料的優點:定位資料非常快,前提是:目標陣列是有序的,  

總結一下使用索引的一些建議

  1. 在區分度高的欄位上面建立索引可以有效的使用索引,區分度太低,無法有效的利用索引,可能需要掃描所有資料頁,此時和不使用索引差不多
  2. 聯合索引注意最左匹配原則:必須按照從左到右的順序匹配,mysql會一直向右匹配直到遇到范圍查詢(>、<、between、like)就停止匹配,比如a = 1 and b = 2 and c > 3 and d = 4 如果建立(a,b,c,d)順序的索引,d是用不到索引的,如果建立(a,b,d,c)的索引則都可以用到,a,b,d的順序可以任意調整
  3. 查詢記錄的時候,少使用*,盡量去利用索引覆寫,可以減少回表操作,提升效率
  4. 有些查詢可以采用聯合索引,進而使用到索引下推(IPC),也可以減少回表操作,提升效率
  5. 禁止對索引欄位使用函式、運算子操作,會使索引失效
  6. 字串欄位和數字比較的時候會使索引無效
  7. 模糊查詢'%值%'會使索引無效,變為全表掃描,但是'值%'這種可以有效利用索引
  8. 排序中盡量使用到索引欄位,這樣可以減少排序,提升查詢效率

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

標籤:MySQL

上一篇:不就是SELECT COUNT陳述句嗎,竟然能被面試官虐的體無完膚

下一篇:[mybatis] sql陳述句無錯誤,但是執行多條sql陳述句時,拋出java.sql.SQLSyntaxErrorException

標籤雲
其他(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