上一篇
最近数据库领域迎来重大变革!MySQL 9.0正式发布,查询性能提升40%,恰好我们分析的传智播客书城系统就采用了这一最新版本,据内部消息,这套系统日均处理订单量已突破50万单,其数据库设计功不可没~
传智播客书城采用经典的三层架构:
前端展示层 → 业务逻辑层 → 数据访问层
⬇
MySQL 9.0集群
核心数据库包含28张表,主要分为五大模块:
CREATE TABLE `tb_user` ( `user_id` BIGINT PRIMARY KEY AUTO_INCREMENT, `username` VARCHAR(50) UNIQUE NOT NULL, `password` CHAR(64) NOT NULL COMMENT 'SHA-256加密', `salt` CHAR(10) NOT NULL COMMENT '加密盐值', `mobile` VARCHAR(15) UNIQUE, `email` VARCHAR(100) UNIQUE, `avatar` VARCHAR(255) DEFAULT 'default.jpg', `credit_score` TINYINT DEFAULT 100 COMMENT '信用分', `status` TINYINT DEFAULT 1 COMMENT '0-禁用 1-正常', `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP, `update_time` DATETIME ON UPDATE CURRENT_TIMESTAMP ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
设计亮点:
CREATE TABLE `tb_category` ( `cat_id` INT PRIMARY KEY AUTO_INCREMENT, `parent_id` INT COMMENT '父分类ID', `name` VARCHAR(50) NOT NULL, `level` TINYINT NOT NULL COMMENT '1-一级 2-二级 3-三级', `sort_order` INT DEFAULT 0, `is_show` TINYINT DEFAULT 1, `icon` VARCHAR(255) ) ENGINE=InnoDB;
创新点:
订单表按用户ID哈希分片:
-- 订单主表(按user_id%8分表) CREATE TABLE `tb_order_0` ( `order_id` BIGINT PRIMARY KEY, `order_no` VARCHAR(32) UNIQUE, `user_id` BIGINT NOT NULL, `payment_amount` DECIMAL(10,2), `status` TINYINT COMMENT '0-未支付 1-已支付...', `create_time` DATETIME, INDEX `idx_user` (`user_id`) ) ENGINE=InnoDB; -- 订单明细表 CREATE TABLE `tb_order_item` ( `item_id` BIGINT PRIMARY KEY, `order_id` BIGINT, `book_id` BIGINT, `quantity` INT, `price` DECIMAL(10,2), INDEX `idx_order` (`order_id`) ) ENGINE=InnoDB;
-- 预扣库存设计 CREATE TABLE `tb_seckill_stock` ( `item_id` BIGINT PRIMARY KEY, `total_stock` INT NOT NULL, `available_stock` INT NOT NULL COMMENT '可用库存', `lock_stock` INT DEFAULT 0 COMMENT '预扣库存', `version` INT DEFAULT 0 COMMENT '乐观锁版本号' ) ENGINE=InnoDB;
实战技巧:
ALTER TABLE `tb_book` ADD INDEX `idx_category_brand` (`cat_id`, `brand_id`);
SELECT book_id, title FROM tb_book WHERE status=1 AND cat_id=5;
慢查询改造前:
SELECT * FROM tb_order WHERE create_time > '2025-01-01' ORDER BY payment_amount DESC;
优化后方案:
-- 添加复合索引 ALTER TABLE `tb_order` ADD INDEX `idx_time_amount` (`create_time`, `payment_amount`); -- 使用延迟关联 SELECT a.* FROM tb_order a JOIN ( SELECT order_id FROM tb_order WHERE create_time > '2025-01-01' ORDER BY payment_amount DESC LIMIT 10000, 10 ) b ON a.order_id = b.order_id;
-- 存储商品扩展属性 ALTER TABLE `tb_book` ADD `specs` JSON COMMENT '商品规格'; -- 查询JSON字段 SELECT title, specs->'$.pages' AS pages FROM tb_book WHERE specs->'$.publisher' = '传智出版社';
-- 计算用户消费排名 SELECT user_id, SUM(payment_amount) AS total, RANK() OVER(ORDER BY SUM(payment_amount) DESC) AS rank FROM tb_order GROUP BY user_id;
传智书城的数据库设计体现了这些核心思想:
这套系统经过5年迭代(2020-2025),目前QPS峰值可达1.2万,平均查询响应时间控制在80ms内,堪称电商数据库设计的典范案例!🎉
注:本文所有技术方案均基于传智播客2025年公开技术白皮书整理,实际实现可能随版本更新有所调整。
本文由 以明远 于2025-08-09发表在【云服务器提供商】,文中图片由(以明远)上传,本平台仅提供信息存储服务;作者观点、意见不代表本站立场,如有侵权,请联系我们删除;若有图片侵权,请您准备原始证明材料和公证书后联系我方删除!
本文链接:https://vps.7tqx.com/wenda/577670.html
发表评论