java開發之MySQL資料庫效能優化

2021-08-27 06:00:11 字數 2203 閱讀 3487

一、mysql實現優化

1)資料庫設計要合理(遵循3f式)

2).新增索引()

索引分為:普通索引、主鍵索引、唯一索引、全文索引

3)分表分庫技術(取模分表、水平分割、垂直分割)

4).讀寫分離

5).儲存過程

6).配置最大連線數

7).伺服器公升級

8).隨時清理碎片化

9).sql語句調優

二、資料庫設計

1).減少冗餘量

2).遵循3f式

三、三正規化

1f:原子約束 每列不可再分

2f:保證唯一性

3f:不要冗餘資料

四、分表分庫

1).垂直切分

將乙個專案拆分成多個小專案,每個小專案都有單獨的資料庫,好處是互不影響。

2)水平切分

通過取模演算法,均勻分配

五、定位慢查詢

1)什麼是慢查詢?

mysql預設慢查詢是10秒,如果10秒後還沒響應回來這種現象稱為慢查詢

2)慢查詢次數命令

show status like 『slow_queries』;

六、索引

索引用來快速地尋找那些具有特定值的記錄,所有mysql索引都以b-樹的形式儲存。如果沒有索引,執行查詢時mysql必須從第乙個記錄開始掃瞄整個表的所有記錄,直至找到符合要求的記錄。表裡面的記錄數量越多,這個操作的代價就越高。如果作為搜尋條件的列上已經建立了索引,mysql無需掃瞄任何記錄即可迅速得到目標記錄所在的位置。如果表有1000個記錄,通過索引查詢記錄至少要比順序掃瞄記錄快100倍

七、索引分類

1)主鍵索引

主鍵是一種唯一性索引,但它必須指定為「primary key」。如果你曾經用過auto_increment型別的列,你可能已經熟悉主鍵之類的概念了。主鍵一般在建立表的時候指定,例如「create table tablename ( […], primary key (列的列表) ); 」。但是,我們也可以通過修改表的方式加入主鍵,例如「alter table tablename add primary key (列的列表); 」。每個表只能有乙個主鍵。

2)唯一索引

索引列的所有值都只能出現一次,即必須唯一。

3)組合索引

4)全文索引

停止詞, 因為在乙個文字中,建立索引是乙個無窮大的數,因此,對一些常用詞和字元,就不會建立,這些詞,稱為停止詞

5)普通索引

普通索引(由關鍵字key或index定義的索引)的唯一任務是加快對資料的訪問速度。因此,應該只為那些最經常出現在查詢條件(wherecolumn=)或排序條件(orderbycolumn)中的資料列建立索引。只要有可能,就應該選擇乙個資料最整齊、最緊湊的資料列(如乙個整數型別的資料列)來建立索引。

八、索引實現原理

底層通過b叉樹實現,首先建立索引檔案,索引檔案中每個值都有乙個下標位置

九、索引會提交效率

索引是乙個折半查詢,首先會取乙個中間數,然後左邊為小,右邊為大,如果查詢的資料比它大就找右邊,效率是2的n次方,索引缺點是增加、刪除、索引檔案也會更新

九、儲存引擎

inndb

myisam

memory

十、inndb和myisam的區別

1)批量新增時myisam效率高

2)inndb事務機制安全

3)myisam是表鎖

4)inndb是行鎖

5)myisam支援全文檢索

6)inndb不支援全文檢索

7)都支援b叉樹資料結構

8)支援索引快取

十一、sql優化技巧

① 使用group by 分組查詢是,預設分組後,還會排序,可能會降低速度,

在group by 後面增加 order by null 就可以防止排序.

explain select * from emp group by deptno order by null;

② 有些情況下,可以使用連線來替代子查詢。因為使用join,mysql不需要在記憶體中建立臨時表。

select * from dept, emp where dept.deptno=emp.deptno; [簡單處理方式]

select * from dept left join emp on dept.deptno=emp.deptno; [左外連線,更ok!]

java面試之mysql資料庫

1.資料庫引擎 mysql常用的資料庫引擎有兩種,一種是innodb,發音為 in no db 一種是 myisam,發音為 my z ei m innodb引擎提供了對資料庫acid事務支援,並實現四種隔離級別和行級鎖和外來鍵約束,myisam沒有提供對資料庫事務的支援,也不支援行級鎖和外來鍵,但...

Java連線MySQL資料庫

廢話不多說,直接上 記得在用eclipse建立專案後,要匯入jdbc。首先建立乙個databaseconnection類,用來連線資料庫。public class databaseconnection catch exception e public connection getconnectin ...

MySQL資料庫之資料庫操作

建立資料庫時指定儲存的字元編碼 如果不指定編碼,資料庫預設使用安裝資料庫時指定的編碼 mysql create database emp charset gbk query ok,1 row affected 0.00 sec 建立資料庫 mysql create database stu quer...