數(shù)據(jù)庫優(yōu)化中都有哪些內(nèi)容

這篇文章主要介紹了數(shù)據(jù)庫優(yōu)化中都有哪些內(nèi)容的相關(guān)知識,內(nèi)容詳細易懂,操作簡單快捷,具有一定借鑒價值,相信大家閱讀完這篇數(shù)據(jù)庫優(yōu)化中都有哪些內(nèi)容文章都會有所收獲,下面我們一起來看看吧。

成都創(chuàng)新互聯(lián)專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務,包含不限于網(wǎng)站制作、網(wǎng)站建設(shè)、夏津網(wǎng)絡(luò)推廣、小程序開發(fā)、夏津網(wǎng)絡(luò)營銷、夏津企業(yè)策劃、夏津品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運營等,從售前售中售后,我們都將竭誠為您服務,您的肯定,是我們最大的嘉獎;成都創(chuàng)新互聯(lián)為所有大學生創(chuàng)業(yè)者提供夏津建站搭建服務,24小時服務熱線:18980820575,官方網(wǎng)址:bm7419.com

一、問題分析

考官主要是對數(shù)據(jù)庫優(yōu)化方面的考核,一般數(shù)據(jù)庫優(yōu)化分為性能和應用方面的,如你了解 sql優(yōu)化嗎;百萬數(shù)據(jù)怎么優(yōu)化等

二、 核心答案講解

1、根據(jù)服務層面 、配置 MySQL性能優(yōu)化參數(shù);

2、從系統(tǒng)層面增強 mysql的性能 、優(yōu)化數(shù)據(jù)表結(jié)構(gòu)、字段類型、字段索引、分表,分庫、讀寫分離等等。

3、從數(shù)據(jù)庫層面增強性能 、優(yōu)化 SQL語句,合理使用字段索引。

4、從代碼層面增強性能 、使用緩存和 NOSQL數(shù)據(jù)庫方式存儲,如 MongoDB/Memcached/redis來緩解高并發(fā)下數(shù)據(jù)庫查詢的壓力。

5、減少數(shù)據(jù)庫操作次數(shù),盡量使用數(shù)據(jù)庫訪問驅(qū)動的批處理方法。

6、不常使用的數(shù)據(jù)遷移備份,避免每次都在海量數(shù)據(jù)中去檢索。

7、提升數(shù)據(jù)庫服務器硬件配置,或者搭建數(shù)據(jù)庫集群。

8、編程手段防止 SQL注入 、使用 JDBC PreparedStatement按位插入或查詢;正則表達式過濾(非法字符串過濾);

 三、問題擴展

 

1、Sql優(yōu)化

1)應盡量避免在 where子句中使用!=或<>操作符,否則將引擎放棄使用索引而進行全表掃描;

2)應盡量避免在 where子句中對字段進行 null值判斷,否則將導致引擎放棄使用索引而進行全表掃描,如 、select id from t where num is null可以在 num上設(shè)置默認值 0,確保表中 num列沒有 null值,然后這樣查詢 :

select id from t where num=0;

3)很多時候用 exists代替 in是一個好的選擇;

4)用 Where子句替換 HAVING子句 因為 HAVING只會在檢索出所有記錄之后才對結(jié)果集進行過濾;

5)select count(*) from table;這樣不帶任何條件的count會引起全表掃描,并且沒有任何業(yè)務意義,是一定要杜絕的;

2、索引

1)索引概念 、對數(shù)據(jù)庫表中一列或多列的值進行排序的一種結(jié)構(gòu),使用索引可快速訪問數(shù)據(jù)庫表中的特定信息。如果我們把一個表的內(nèi)容認為是一本字典,那索引就相當于字典的目錄

2)索引類型 :

Oracle:

邏輯上 :Single column單行索引

Concatenated多行索引

Unique唯一索引

NonUnique非唯一索引

Function-based函數(shù)索引

Domain域索引

物理上:

Partitioned分區(qū)索引

NonPartitioned非分區(qū)索引

B-tree:

Normal正常型 B樹

Rever Key反轉(zhuǎn)型 B樹

Bitmap位圖索引

MySQL索引分為普通索引、唯一索引、主鍵索引、組合索引、全文索引

3)何時使用索引

①主鍵,unique字段;

②和其他表做連接的字段需要加索引;

③在 where里使用>,&ge;,=,<,&le;,is null和 between

等字段;

④使用不以通配符開始的 like,where A like 'China%';

⑤聚集函數(shù) MIN(),MAX()中的字段;

⑥order by和 group by字段;

4)索引何時失效

①組合索引未使用最左前綴,例如組合索引(A,B),where B=b不會使用索引;

②like未使用最左前綴,where A like '%China';

③搜索一個索引而在另一個索引上做 order by,whereA=a order by B,只使用 A上的索引,因為查詢只使用一個索引 ;

④or會使索引失效。如果查詢字段相同,也可以使用索引。例如 where A=a1 or A=a2(生效),where A=a orB=b(失效)

⑤如果列類型是字符串,要使用引號。例如 whereA='China',否則索引失效(會進行類型轉(zhuǎn)換);

⑥在索引列上的操作,函數(shù)(upper()等)、or、!=(<>)、not in等;

四、結(jié)合項目中使用

1.常用但不經(jīng)常修改的字段建索引(譬如商品表的商品名稱等字段),達到檢索速度增快,用戶體驗度增高的目的

2.用 mycat進行分庫分表

垂直拆分是基于數(shù)據(jù)庫中的"列"進行,某個表字段較多,可以新建一張擴展表,將不經(jīng)常用或字段長度較大的字段拆分出去到擴展表中。例如用戶表,在字段很多的情況下(例如一個大表有 100多個字段),通過"大表拆小表",更便于開發(fā)與維護,也能避免跨頁問題

水平分表

水平切分分為庫內(nèi)分表和分庫分表,是根據(jù)表內(nèi)數(shù)據(jù)內(nèi)在的邏輯關(guān)系,將同一個表按不同的條件分散到多個數(shù)據(jù)庫或多個表中,每個表中只包含一部分數(shù)據(jù),從而使得單個表的數(shù)據(jù)量變小,達到分布式的效果(如訂單表)

關(guān)于“數(shù)據(jù)庫優(yōu)化中都有哪些內(nèi)容”這篇文章的內(nèi)容就介紹到這里,感謝各位的閱讀!相信大家對“數(shù)據(jù)庫優(yōu)化中都有哪些內(nèi)容”知識都有一定的了解,大家如果還想學習更多知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。

當前名稱:數(shù)據(jù)庫優(yōu)化中都有哪些內(nèi)容
文章鏈接:http://bm7419.com/article46/pceeeg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App開發(fā)、微信公眾號、標簽優(yōu)化、網(wǎng)站維護網(wǎng)站營銷、網(wǎng)站收錄

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

微信小程序開發(fā)