您好,登錄后才能下訂單哦!
這篇文章主要介紹了數據庫優化中都有哪些內容的相關知識,內容詳細易懂,操作簡單快捷,具有一定借鑒價值,相信大家閱讀完這篇數據庫優化中都有哪些內容文章都會有所收獲,下面我們一起來看看吧。
一、問題分析
考官主要是對數據庫優化方面的考核,一般數據庫優化分為性能和應用方面的,如你了解 sql 優化嗎;百萬數據怎么優化等
二、 核心答案講解
1、根據服務層面 、配置 mysql 性能優化參數;
2、從系統層面增強 mysql 的性能 、優化數據表結構、字段類型、字段索引、分表,分庫、讀寫分離等等。
3、從數據庫層面增強性能 、優化 SQL 語句,合理使用字段索引。
4、從代碼層面增強性能 、使用緩存和 NoSQL 數據庫方式存儲,如 MongoDB/Memcached/Redis 來緩解高并發下數據庫查詢的壓力。
5、減少數據庫操作次數,盡量使用數據庫訪問驅動的批處理方法。
6、不常使用的數據遷移備份,避免每次都在海量數據中去檢索。
7、提升數據庫服務器硬件配置,或者搭建數據庫集群。
8、編程手段防止 SQL 注入 、使用 JDBC PreparedStatement按位插入或查詢;正則表達式過濾(非法字符串過濾);
三、問題擴展
1、Sql 優化
1)應盡量避免在 where 子句中使用!=或<>操作符,否則將引擎放棄使用索引而進行全表掃描;
2)應盡量避免在 where 子句中對字段進行 null 值判斷,否則將導致引擎放棄使用索引而進行全表掃描,如 、select id from t where num is null可以在 num 上設置默認值 0,確保表中 num 列沒有 null值,然后這樣查詢 :
select id from t where num=0;
3)很多時候用 exists 代替 in 是一個好的選擇;
4)用 Where 子句替換 HAVING 子句 因為 HAVING 只會在檢索出所有記錄之后才對結果集進行過濾;
5)select count(*) from table;這樣不帶任何條件的count 會引起全表掃描,并且沒有任何業務意義,是一定要杜絕的;
2、索引
1)索引概念 、對數據庫表中一列或多列的值進行排序的一種結構,使用索引可快速訪問數據庫表中的特定信息。如果我們把一個表的內容認為是一本字典,那索引就相當于字典的目錄
2)索引類型 :
Oracle:
邏輯上 :Single column 單行索引
Concatenated 多行索引
Unique 唯一索引
NonUnique 非唯一索引
Function-based 函數索引
Domain 域索引
物理上:
Partitioned 分區索引
NonPartitioned 非分區索引
B-tree :
Normal 正常型 B 樹
Rever Key 反轉型 B 樹
Bitmap 位圖索引
MySQL索引分為普通索引、唯一索引、主鍵索引、組合索引、全文索引
3)何時使用索引
①主鍵,unique 字段;
②和其他表做連接的字段需要加索引;
③在 where 里使用>,≥,=,<,≤,is null 和 between
等字段;
④使用不以通配符開始的 like,where A like 'China%';
⑤聚集函數 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',否則索引失效(會進行類型轉換);
⑥在索引列上的操作,函數(upper()等)、or、!=(<>)、not in 等;
四、結合項目中使用
1.常用但不經常修改的字段建索引(譬如商品表的商品名稱等字段),達到檢索速度增快,用戶體驗度增高的目的
2.用 mycat 進行分庫分表
垂直拆分是基于數據庫中的"列"進行,某個表字段較多,可以新建一張擴展表,將不經常用或字段長度較大的字段拆分出去到擴展表中。例如用戶表,在字段很多的情況下(例如一個大表有 100 多個字段),通過"大表拆小表",更便于開發與維護,也能避免跨頁問題
水平分表
水平切分分為庫內分表和分庫分表,是根據表內數據內在的邏輯關系,將同一個表按不同的條件分散到多個數據庫或多個表中,每個表中只包含一部分數據,從而使得單個表的數據量變小,達到分布式的效果(如訂單表)
關于“數據庫優化中都有哪些內容”這篇文章的內容就介紹到這里,感謝各位的閱讀!相信大家對“數據庫優化中都有哪些內容”知識都有一定的了解,大家如果還想學習更多知識,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。