零、相关事项说明
基础环境:
-
MySQL v8.0.40
-
Ubuntu 24.04.1
-
CPU:i5-7300HQ 2.50HZ
-
RAM:8GB(Ramaxel DDR4 2400 MT/s) + 8 GB(Kingston DDR4 2400 MT/s)
-
存储:三星固态硬盘 128GB(NVMe SAMSUNG MZVLW128 PCI-E3.0)
设计说明:
实际上,大数据量场景下,各种优化决策十分依赖于业务需求,很难说一招鲜吃遍天。
还是需要结合现实情况,凭借经验和有理有据的设计,再加上测试验证,得到最终的方案。
一、虚构背景
1.1 场景介绍
你正在开发一个电商平台的订单中心系统,该系统需要处理大量的订单数据,支持高并发的订单写入和查询。
1.2 基础表
订单表:
CREATE TABLE t_order (
id BIGINT UNSIGNED AUTO_INCREMENT COMMENT '自增主键',
cre_time DATETIME NOT NULL COMMENT '订单创建时间',
order_no VARCHAR(30) NOT NULL COMMENT '订单编号',
user_id BIGINT NOT NULL COMMENT '用户ID',
product_id BIGINT NOT NULL COMMENT '商品ID',
amount DECIMAL(10,2) NOT NULL COMMENT '订单金额',
status TINYINT NOT NULL COMMENT '订单状态 0:待支付 1:已支付 2:已取消 3:已完成',
payment_type TINYINT NOT NULL COMMENT '支付方式 0:支付宝 1:微信 2:银行卡',
update_time DATETIME NULL COMMENT '最后更新时间',
PRIMARY KEY (id,cre_time)
) ENGINE=InnoDB;