[TOC]
# 1. 優化
## 1.1 數據庫設計優化
### 1. 選取最適用的字段屬性
MySQL可以很好的支持大數據量的存取,但是一般說來,數據庫中的表越小,在它上面執行的查詢也就會越快。因此,在創建表的時候,為了獲得更好的性能,我們可以將表中字段的寬度設得盡可能小。
優先考慮數字類型,其次是日期或二進制類型,最后是字符類型。對于相同級別的數據類型,應該優先選擇占用空間小的數據類型。
以上選擇 主要從 下面兩個角度考慮
a: 在對數據進行比較(查詢條件、join 條件及排序)操作時 :同樣的數據,字符處理往往比數字處理慢
b: 在數據庫中,數據處理以頁為單位,列的長度越小,利于提升性能。
3.2 char 和 varchar 如何選擇
a: 如果列中要存儲的數據長度差不多是一致的,則應該考慮用char ;否則應該考慮用varchar 。
b: 如果列中最大數據長度小于50字節,則一般也考慮用char
c: 一般不宜定義大于50個字節的char類型列


## 1.2 數據庫參數調優
* **索引優化**
對于大表的查詢操作,索引優化是非常重要的一環。可以考慮**增加或者修改索引、使用覆蓋索引、使用聯合索引等方式來提高查詢效率**。同時也要注意**定期清理冗余的索引以及對于經常使用的查詢語句建立索引**。
* **分區優化**
將大表按照某個列分成多個分區表,每個分區表的數據量較小,可以提高查詢和更新的性能。分區表還可以幫助在維護表結構的同時,減少鎖表時間,提高并發處理能力。
* **數據清理歸檔**
對于一些歷史數據或者無用數據,**可以進行定期歸檔,避免數據過多造成SQL查詢效率降低**。同時也要注意對于大表進行定期的數據備份以及緊急數據恢復的準備工作。
* **緩存優化**
對于一些經常被查詢的數據,可以使用緩存優化。使用`Redis`等緩存中間件來緩存常用的數據,以減少查詢數據庫的次數,提高查詢效率。
* **SQL語句優化**
在編寫SQL查詢語句時,要盡可能地簡單明了,避免復雜的查詢語句,同時也要避免一些不必要的查詢操作。對于復雜的查詢語句,可以使用`Explain`執行計劃來進行優化。同時也要注意避免使用`OR`等耗費性能的操作符。
* **分庫分表**
如果數據量千萬級別,需要考慮分庫分表
- 計算機網絡
- 基礎_01
- tcp/ip
- http轉https
- Let's Encrypt免費ssl證書(基于haproxy負載)
- what's the http?
- 網關
- 網絡IO
- http
- 工具
- Git
- 初始本地倉庫并上傳
- git保存密碼
- Gitflow
- maven
- 1.生命周期命令
- 聚合與繼承
- 插件管理
- assembly
- 資源管理插件
- 依賴范圍
- 分環境打包
- dependencyManagement
- 版本分類
- 找不到主類
- 無法加載主類
- 私服
- svn
- gradle
- 手動引入第三方jar包
- 打包exe文件
- Windows
- java
- 設計模式
- 七大原則
- 1.開閉原則
- 2. 里式替換原則
- 3. 依賴倒置原則
- 4. 單一職責原則
- 單例模式
- 工廠模式
- 簡單工廠
- 工廠方法模式
- 抽象工廠模式
- 觀察者模式
- 適配器模式
- 建造者模式
- 代理模式
- 適配器模式
- 命令模式
- json
- jackson
- poi
- excel
- easy-poi
- 規則
- 模板
- 合并單元格
- word
- 讀取
- java基礎
- 類路徑與jar
- 訪問控制權限
- 類加載
- 注解
- 異常處理
- String不可變
- 跨域
- transient關鍵字
- 二進制編碼
- 泛型1
- 與或非
- final詳解
- Java -jar
- 正則
- 讀取jar
- map
- map計算
- hashcode計算原理
- 枚舉
- 序列化
- URLClassLoader
- 環境變量和系統變量
- java高級
- java8
- 1.Lambda表達式和函數式接口
- 2.接口的默認方法和靜態方法
- 3.方法引用
- 4.重復注解
- 5.類型推斷
- 6.拓寬注解的應用場景
- java7-自動關閉資源機制
- 泛型
- stream
- 時區的正確理解
- StringJoiner字符串拼接
- 注解
- @RequestParam和@RequestBody的區別
- 多線程
- 概念
- 線程實現方法
- 守護線程
- 線程阻塞
- 筆試題
- 類加載
- FutureTask和Future
- 線程池
- 同步與異步
- 高效簡潔的代碼
- IO
- ThreadLocal
- IO
- NIO
- 圖片操作
- KeyTool生成證書
- 壓縮圖片
- restful
- 分布式session
- app保持session
- ClassLoader.getResources 能搜索到的資源路徑
- java開發規范
- jvm
- 高并發
- netty
- 多線程與多路復用
- 異步與事件驅動
- 五種IO模型
- copy on write
- code style
- 布隆過濾器
- 筆試
- 數據庫
- mybatis
- mybatis與springboot整合配置
- pagehelper
- 分頁數據重復問題
- Java與數據庫之間映射
- 攔截器
- 攔截器應用
- jvm
- 堆內存測試
- 線程棧
- 直接內存
- 內存結構
- 內存模型
- 垃圾回收
- 調優
- 符號引用
- 運行參數
- 方法區
- 分帶回收理論
- 快捷開發
- idea插件
- 注釋模板
- git
- pull沖突
- push沖突
- Excel處理
- 圖片處理
- 合并單元格
- easypoi
- 模板處理
- 響應式編程
- reactor
- reactor基礎
- jingyan
- 規范
- 數據庫