高性能可扩展MySQL数据库设计及架构优化 电商项目_1

一 数据库设计规范

1 命名规范

所有数据库对象名称必须用小写字母并下划线分割

对象名称禁止使用MySQL保留关键字

命名要做到见名识义,不超过32字节

临时表必须tmp前缀 日期后缀

备份库表bak前缀 日期后缀

所有存储相同数据的列名和类型必须一致

2 数据库基本设计规范

所有表必须用innodb引擎

数据库和表字符集同意使用utf8(全存储中文的可以使用gbk 或是gbk2312)

所有表和字段都使用comment加注释

从一开始就进行数据字典的维护

尽量控制单表数据量的大小 建议500万以内

谨慎使用MySQL分区表

尽量做到冷热数据分离 减小表的宽度

禁止在表中建立预留字段

禁止在数据库中存储图片 文件等二进制数据

禁止在线上做数据库的压力测试

禁止从开发环境 测试环境连接生产环境的数据库

3索引设计规范

限制每张表索引数量,建议单张表索引不超过5个

每个innodb表必须有一个主键,不适用频繁更新的列为主键 不适用多留主键

常见索引留建议: 在select update delete语句中where从句中的列

包含在order by 、group by  distinct中的字段

多表连接的关联列

如何选择索引列的顺序:

区分度最高的列放在联合索引的最左侧(尽量选主键)

字段小的列放在联合索引的最左侧

使用最频繁的列放在联合索引的左侧

不建议使用外键约束,但是一定在表与表之间的关联键上建立索引

4 数据库字段设计规范

有限选择符合存储需要的最小的数据类型,

比如讲字符串转化的数字类型存储

对于非负数数据采用无符号整形进行存储( unsigned int)

避免使用text blob enum类型

尽量把列定义为not null

使用大datetime 或timestamp类型存储时间

同财务相关的金额类数据 必须使用decimal类型

5 数据库sql开发规范

建议使用预编译语句进行数据库操作

避免使用双%的查询条件 如like %w%

应该对以后的扩展进行考虑

程序连接

禁止使用select *

避免使用子查询 可转化为join操作

避免使用join关联太多的表 建议不少过5个

减少同数据库的交互次数

明显不会有重复值是使用union all代替union

拆分复杂的大sql为多个小sql

6 数据库操作行为规范

超100万行的批量些操作 要分批多次进行操作

对大表使用pt-online-schema-change修改表结构

禁止为程序使用的账号赋予super权限,遵循权限最小原则,不准有drop权限

时间: 2024-08-01 22:38:47

高性能可扩展MySQL数据库设计及架构优化 电商项目_1的相关文章

高性能可扩展MySQL数据库设计及架构优化 电商项目

第1章 数据库开发规范的制定    俗话说:"没有规矩不成方圆".这一章,我们就先来制定数据库开发的各种规范,包括:数据库命名规范.数据库基本设计规范.数据库索引设计规范.数据库字段设计规范.SQL开发规范以及数据库操作规范.通过这些规范的制定可以指导并规范我们后续的开发工作,为我们以后的工作提供一个良好的基础.... 第2章 电商实例数据库结构设计    数据库开发规范的基础之上,如何更好的利用规范设计出易于维护和伸缩性良好的数据库结构,是我们的学习目的.这一章我们根据常用电商项目需

Java从入门到架构师|高并发|高性能|高可用|分布式|性能调优|设计模式|大型电商项目

没有设计的思想,你就不能成为一名架构师.架构师是一个能撸的了一手好代码,画的了一个漂亮的UML/原型,写的了一篇技术文档,更加能解决好项目关键技术的综合人才.架构师=前端工程师+后端程序员+系统分析师+关键技术解决+各种技术搭配+设计模式+部署调优+其他,可见架构师是多面手,在项目当中起到连接管理与项目成员的重要角色.因此,在通往大神级的架构师的道路上,你需要懂需求.设计.代码.部署.架构.服务器.运维.调优等等. 简单系统架构图 一个能担负起企业级应用的架构师,脑海里常出现的词会是这些:负载均

构建SpringBoot,SpringCloud微服务架构分布式电商项目实战

Spring Cloud 微服务总体架构图 上面图中技术名词理解: 1.Sleuth-链路跟踪 为服务之间调用提供链路追踪.通过Sleuth可以很清楚的了解到一个服务请求经过了哪些服务,每个服务处理花费了多长.从而让我们可以很方便的理清各微服务间的调用关系. 2.断路器(Hystrix) 在微服务架构中,根据业务来拆分成一个个的服务,服务与服务之间可以相互调用(RPC),在Spring Cloud可以用RestTemplate+Ribbon和Feign来调用.为了保证其高可用,单个服务通常会集群

Java企业级电商项目架构演进之路 Tomcat集群与Redis分布式百度云实战分享

muke慕课实战课程分享QQ313675301 新增课程: Java企业级电商项目架构演进之路 Tomcat集群与Redis分布式百度云实战分享 后端开发: 1.高级java软件架构师实战培训视频教程2.大型SpringMVC,Mybatis,Redis,Solr,Nginx,SSM分布式电商项目视频教程3.Spark Streaming实时流处理项目实战4.Java校招面试 Google面试官亲授5.Java开发企业级权限管理系统6.Java大牛 带你从0到上线开发企业级电商项目7.Java

java架构师课程、性能调优、高并发、tomcat负载均衡、大型电商项目实战、高可用、高可扩展、数据库架构设计、Solr集群与应用、分布式实战、主从复制、高可用集群、大数据

15套Java架构师详情 * { font-family: "Microsoft YaHei" !important } h1 { background-color: #006; color: #FF0 } 15套java架构师.集群.高可用.高可扩展.高性能.高并发.性能优化.Spring boot.Redis.ActiveMQ.Nginx.Mycat.Netty.Jvm大型分布式项目实战视频教程 视频课程包含: 高级Java架构师包含:Spring boot.Spring  clo

36套精品Java高级课,架构课,java8新特性,P2P金融项目,程序设计,功能设计,数据库设计,第三方支付,web安全,高并发,高性能,高可用,分布式,集群,电商,缓存,性能调优,设计模式,项目实战,大型分布式电商项目实战视频教程

新年伊始,学习要趁早,点滴记录,学习就是进步! QQ:1225462853 视频课程包含: 36套Java精品高级课架构课包含:java8新特性,P2P金融项目,程序设计,功能设计,数据库设计,架构设计,web安全,高并发,高性能,高可用,高可扩展,分布式,集群,电商,缓存,性能调优,设计模式,项目实战,工作流,程序调优,负载均衡,Solr集群与应用,主从复制,中间件,全文检索,Spring boot,Spring cloud,Dubbo,Elasticsearch,Redis,ActiveMQ

mysql数据库设计开发规范

1.设计 1. 一般都使用INNODB存储引擎,除非读写比率<1%,才考虑使用MYISAM存储引擎:其他存储引擎请在DBA的建议下使用. 2. Stored procedure (包括存储过程,函数,触发器)对于MYSQL来说还不是很成熟,没有完善的出错记录处理,不建议使用. 3. UUID(),USER()这样的MYSQL INSIDE函数对于复制来说是很危险的,会导致主备数据.不一致.所以请不要使用.如果一定要使用UUID作为主键,让应用程序来产生. 4. 请不要使用外键约束,如果数据存在外

16套java架构师,高并发,高可用,高性能,集群,大型分布式电商项目实战视频教程

16套Java架构师,集群,高可用,高可扩展,高性能,高并发,性能优化,设计模式,数据结构,虚拟机,微服务架构,日志分析,工作流,Jvm,Dubbo ,Spring boot,Spring cloud, Redis,ActiveMQ,Nginx,Mycat,Netty,Jvm,Mecached,Nosql,Spring,大型分布式项目实战视频教程 视频课程包含: 高级Java架构师包含:架构师,高并发,分布式,集群,高可用,高可扩展,高性能,设计模式,数据结构算法,虚拟机,微服务架构,日志分析,

数据库设计与性能优化

转自:http://blog.51cto.com/jimshu/1250066 一.数据库设计与性能优化--概述 jimshu关注2人评论5892人阅读2013-07-16 08:02:14 前言 我1998年第一次接触SQL Server 6.5 for Windows NT 4.0,当时的感觉就认为SQL Server只是一个功能强大的Excel文件.现在回想起来,当年抱着这样一种态度,我开发的那些应用程序应该是非常幼稚的,其性能可想而知.记得那时候随便查询一笔记录就要花费十几秒,已是司空见