中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

數據庫優化中都有哪些內容

發布時間:2022-01-10 10:32:29 來源:億速云 閱讀:133 作者:iii 欄目:編程語言

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

  一、問題分析

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

  二、 核心答案講解

  1、根據服務層面 、配置 mysql 性能優化參數;

  2、從系統層面增強 mysql 的性能 、優化數據表結構、字段類型、字段索引、分表,分庫、讀寫分離等等。

  3、從數據庫層面增強性能 、優化 SQL 語句,合理使用字段索引。

  4、從代碼層面增強性能 、使用緩存和 NoSQL 數據庫方式存儲,如 MongoDB/Memcached/Redis 來緩解高并發下數據庫查詢的壓力。

  5、減少數據庫操作次數,盡量使用數據庫訪問驅動的批處理方法。

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

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

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

  三、問題擴展

 

  1Sql 優化

  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 只會在檢索出所有記錄之后才對結果集進行過濾;

  5select 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 里使用>,&ge;,=,<,&le;,is null between

  等字段;

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

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

  ⑥order by group by 字段;

  4)索引何時失效

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

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

  ③搜索一個索引而在另一個索引上做 order bywhereA=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 多個字段),通過"大表拆小表",更便于開發與維護,也能避免跨頁問題

  水平分表

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

關于“數據庫優化中都有哪些內容”這篇文章的內容就介紹到這里,感謝各位的閱讀!相信大家對“數據庫優化中都有哪些內容”知識都有一定的了解,大家如果還想學習更多知識,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

门头沟区| 丘北县| 嵊州市| 岑巩县| 尼玛县| 永川市| 金阳县| 黄浦区| 九寨沟县| 象山县| 隆安县| 新沂市| 开平市| 托克托县| 宜州市| 特克斯县| 鹿邑县| 循化| 六枝特区| 德化县| 黑水县| 彰武县| 蚌埠市| 崇仁县| 集贤县| 奈曼旗| 托克逊县| 镇沅| 麻栗坡县| 晋宁县| 方正县| 榆社县| 神木县| 万年县| 浮山县| 汶川县| 福州市| 清徐县| 岑溪市| 阿瓦提县| 南丰县|