一、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...