1. 程式人生 > 其它 >MySQL工作總結

MySQL工作總結

一、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地址訪問 主從切換、選舉機制