MySQL工作總結
阿新 • • 發佈:2022-04-09
一、MySQL建表最佳實踐
CREATE TABLE `t_xxxxx` ( `Fid` bigint(255) NOT NULL AUTO_INCREMENT COMMENT '編號', `Fbuss_id` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '業務主鍵', `Fstatus` tinyint(4) DEFAULT '0' COMMENT '狀態 //基於階段定義 10,20,30只保留最終狀態,不要中間狀態', `Ferror_code` varchar(100) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '錯誤碼', `Ferror_msg` varchar(5000) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '錯誤資訊', `Fcreator` varchar(50) COLLATE utf8mb4_general_ci DEFAULT NULL, `Fcreate_time` datetime DEFAULT CURRENT_TIMESTAMP, `Flast_operation_user` varchar(50) COLLATE utf8mb4_general_ci DEFAULT NULL, `Fmodify_time` datetime DEFAULT CURRENT_TIMESTAMP, `Fversion` int(11) DEFAULT NULL COMMENT '資料版本號', PRIMARY KEY (`Fid`), UNIQUE KEY `idx_bussiness_id` (`Fbussiness_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
1、業務主鍵 Fbuss_id:併發情況避免重複插入
2、版本號 Fversion: 併發情況基於樂觀鎖CAS,避免ABA重複更新問題
3、業務錯誤碼 Ferror_code: 預留基於狀態機中途特殊異常問題
4、分階段狀態 Fstatus: 流程特別長,記載每個階段狀態,可無限擴充套件
5、記載最後修改操作 Fmodify_time和Flast_operation_user
二、海量資料處理方案
應用場景 | 解決方案 | 應用系統 | 資料庫 |
高併發 | 水平擴充套件(複製) | 多機叢集,提升併發力 |
讀寫分離(將流量打到不同DB) 如:商品讀庫、商品寫庫 |
垂直拆分(不同業務拆分) |
按業務域劃分系統 如:商品系統、交易系統 |
按業務分庫 (將流量打到不同DB) 如:商品庫、訂單庫 |
|
大資料 | 業務分片(同業務分片) |
按功能點分開部署 如:秒殺系統 |
分庫分表,提高資料容量 如:訂單庫按ID分庫分表 |
水平拆分(穩定與易變分離) |
服務分層 功能與非功能分開 |
冷熱資料分離、歷史資料分離 | |
HA可用性 | 主備自動選舉機制 | 服務閘道器彙報心跳、統一nacos地址訪問 | 主從切換、選舉機制 |