首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

mysql数据库规范

大家好,今天我们来聊一聊MySQL数据库规范MySQL是一个广泛使用的开源关系型数据库管理系统,良好的规范可以提高数据库的性能、可靠性和可维护性。...下面是一些MySQL数据库规范的重要指南,还附了一些索引失效的常见情况和关键字列表,希望对大家有所帮助。...一、数据库规范 所有规范会按照【高危】、【强制】、【建议】三个级别进行标注,遵守优先级从高到低。...1 设计规范 1.1 建库规范 【强制】:库的名称必须控制在32个字符以内 【建议】:库的名称格式:业务系统名称_子系统(模块)名 【建议】:一般分库名称命名格式是 库通配名_编号或 库通配名_时间 【...建议】:创建数据库时可显式指定字符集,只能使用 utf8 或 utf8mb4 格式,数据库默认字符集为 utf8 1.2 建表规范 1.2.1 整体结构限制 【强制】:表名称必须控制在32个字符以内,

30740

MySQL 数据库规范--开发篇

9.避免使用存储过程、触发器、函数等,这些特性会将业务逻辑与数据库耦合在一起,并且MySQL的存储过程,触发器,函数中可能存在bug。 10.尽量避免使用子查询,连接。...11.使用合理的sql语句以减少与数据库的交互次数。 12.建议使用合理的分页技术以提高操作效率。...type =ALL Full Table Scan 全表查询 key =NULL 未使用索引 rows = 7 10数据库中所有记录 extra = Using where ,最终使用where 做结果集过滤...type =ALL Full Table Scan 全表查询 key =NULL 未使用索引 rows = 7 10数据库中所有记录 extra = Using where ,最终使用where 做结果集过滤...当然上述演示比较简单,也不是非常具备实战色彩,对于explain的使用,我们还应在更多的数据库操作场景中多多使用,这是sql调优的利器。

1.6K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    MySQL 数据库命名规范.PDF

    一、数据库涉及字符规范 采用26 个英文字母(区分大小写)和0-9 这十个自然数,加上下划线'_'组成,共37个字符.不能出现其他字符(注释除外)....二、数据库命名规范 数据库名使用小写英文以及下划线组成(weixin+_jd_com).比如: weixin_jd_com im_jd_com 备份数据库名使用正式库名加上备份时间组成,如: dbname..._20150206 三、数据库表命名规范 数据表名使用小写英文以及下划线组成(项目名+表信息)比如: oa_user oa_workflow_steps备份数据表名使用正式表名加上备份时间组成,如: oa_user...业务逻辑放到数据库会造成数据库的DDL、SCALE OUT、SHARDING等变得更加困难。...6)不要在MySQL数据库中存放业务逻辑, 数据库是有状态的服务,变更复杂而且 速度慢,如果把业务逻辑放到数据库中,将会限制业务的快速发展。

    1.1K20

    MySQL数据库设计规范

    1、MYSQL配置参数lower_case_table_names,不可动态更改,LINUX系统默认为0,即库表名以实际情况存储,大小写敏感。如果是 1,以小写存储,大小写不敏感。...规范十,对于字典类型的表,因数据量少,修改少,影响面大,应依赖数据库约束来确保数据质量。对于日志或流水型表,为了提升效率,可以适当放宽限制。 规范十一,对于字段设计:越简单越好,越小越好。...定义大长度会消耗更多的空间(需要用额外的字节存储长度) 在很多时候,mysql 会以列的长度定义来分配使用内存,过大的字段长度定义会消耗更多的内存。甚至还有可能原来可以在内存执行的排序变为磁盘排序。...如果没有指定主键,mysql 会选择一个非空的唯一键作为主键。如果都没有,mysql 会自动分配 6-bytes长度的全局的 rowid 隐藏列作为主键。...规范三十二,禁止冗余索引 规范三十三,在建表时,应充分考虑需要加什么索引,尽量避免上线后条件索引。 规范三十四,如果数据有时效性,则建议按时间分表或者分区。 规范三十五,杜绝按天分表。

    2.3K20

    MySQL数据库设计规范

    规范背景与目的 MySQL数据库与 Oracle、 SQL Server 等数据库相比,有其内核上的优势与劣势。我们在使用MySQL数据库的时候需要遵循一定规范,扬长避短。...本规范旨在帮助或指导RD、QA、OP等技术人员做出适合线上业务的数据库设计。在数据库变更和处理流程、数据库表设计、SQL编写等方面予以规范,从而为公司业务系统稳定、健康地运行提供保障。 2....设计规范 2.1 数据库设计 以下所有规范会按照【高危】、【强制】、【建议】三个级别进行标注,遵守优先级从高到低。 对于不满足【高危】和【强制】两个级别的设计,DBA会强制打回要求修改。...因为Innodb表支持事务、行锁、宕机恢复、MVCC等关系型数据库重要特性,为业界使用最多的MySQL存储引擎。而这是其他大多数存储引擎不具备的,因此首推InnoDB。...2.1.8 一个规范的建表语句示例 一个较为规范的建表语句为: Copy CREATE TABLE user ( `id` bigint(11) NOT NULL AUTO_INCREMENT, `

    2.2K40

    【干货】MySQL数据库开发规范

    所有的数据库对象名称必须使用小写字母并用下划线分割(MySQL大小写敏感,名称要见名知意,最好不超过32字符) 所有的数据库对象名称禁止使用MySQL保留关键字(如 desc、range、match...、delayed 等,请参考 MySQL官方保留字 【https://dev.mysql.com/doc/refman/5.7/en/keywords.html】 ) 临时库表必须以tmp为前缀并以日期为后缀...,从一开始就进行数据字典的维护 尽量控制单表数据量的大小在500w以内,超过500w可以使用历史数据归档,分库分表来实现(500万行并不是MySQL数据库的限制。...MySQL没有对存储有限制,取决于存储设置和文件系统) 谨慎使用mysql分区表(分区表在物理上表现为多个文件,在逻辑上表现为一个表) 谨慎选择分区键,跨分区查询效率可能更低 建议使用物理分表的方式管理大数据...在代码中写分页查询逻辑时,若 count 为 0 应直接返回,避免执行后面的分页语句 ---- 参考: 《阿里巴巴Java开发手册》 《高性能可扩展MySQL数据库设计及架构优化》

    1.2K20

    Mysql数据库对象命名规范

    命名规范是指数据库对象如数据库(SCHEMA)、表(TABLE)、索引(INDEX)、约束(CONSTRAINTS)等的命名约定。...数据库对象全局命名规范 1、命名使用具有意义的英文词汇,词汇中间以下划线分隔 2、命名只能使用英文字母、数字、下划线,以英文字母开头 3、避免用MySQL的保留字如:backup、call、group等...4、所有数据库对象使用小写字母,实际上MySQL中是可以设置大小写是否敏感的,为了保证统一性,我们这边规范全部小写表示。...数据库命名规范 1、数据库命名尽量不超过30个字符。 2、数据库命名一般为项目名称+代表库含义的简写,比如IM项目的工作流数据库,可以是 im_flow。...下一篇: 教你 Linux 下如何实现 MySQL 数据库每天自动备份定时备份→

    5.5K20

    MySQL 社区规范 | 数据库

    如下是包含其中的MySQL开发规范,根据社区很多的博文参考以及结合自身小团队开发情况总结。...临时表必须以tmp_开头、以日期结尾,备份表必须以bak_开头、以日期结尾 基础规范 尽可能地使用InnoDB作为表的存储引擎 在MySQL 5.6以后,InnoDB被设置成默认的存储引擎,支持事务和行级锁...行为与流程规范 禁止在线上做数据库的压力测试 对应的环境使用对应的数据库比如测试环境一定要使用测试环境的数据库 super权限只能属于DBA,不能赋予项目程序 养成查看SQL运行性能的习惯,可以借用性能分析工具...所有建表前都要确定字段的类型、长度以及索引方可建表 确保表结构设计为最优是前期数据库最大的优化 所有对表的结构、数据的修改务必经过DBA的审阅和同意 表设计规范 尽可能每张表的索引数量控制在5个以内...不在数据库做运算,务必将运算置于业务层 MySQL不擅长数学运算和逻辑判断。 禁止使用索引做运算 索引会失效。

    1.1K20

    MySQL系列 | MySQL数据库设计规范

    规范背景与目的 MySQL数据库与 Oracle、 SQL Server 等数据库相比,有其内核上的优势与劣势。我们在使用MySQL数据库的时候需要遵循一定规范,扬长避短。...本规范旨在帮助或指导RD、QA、OP等技术人员做出适合线上业务的数据库设计。在数据库变更和处理流程、数据库表设计、SQL编写等方面予以规范,从而为公司业务系统稳定、健康地运行提供保障。 2....设计规范 2.1 数据库设计 以下所有规范会按照【高危】、【强制】、【建议】三个级别进行标注,遵守优先级从高到低。 对于不满足【高危】和【强制】两个级别的设计,DBA会强制打回要求修改。...因为Innodb表支持事务、行锁、宕机恢复、MVCC等关系型数据库重要特性,为业界使用最多的MySQL存储引擎。而这是其他大多数存储引擎不具备的,因此首推InnoDB。...2.1.8 一个规范的建表语句示例 一个较为规范的建表语句为: CREATE TABLE user ( `id` bigint(11) NOT NULL AUTO_INCREMENT, `user_id

    3.2K30

    【笔记】Mysql 数据库操作规范

    避免在 MySQL 中进⾏数学运算和函数运算。 减少与数据库交互次数,尽量采用批量 SQL 语句。[FAQ-6-02] 拆分复杂 SQL 为多个小 SQL,避免⼤事务。...[FAQ-7-03] 不要在 MySQL 数据库中存放业务逻辑。[FAQ-7-04] 8....数据库账号规范: 业务程序必须实现读写分离,读写账号以后缀 “_w” 命名,只读账号以后缀 “_r” 命名。...数据库授权粒度为库级别,除非特殊情况可以授权到表级别;MySQL 的系统库如 mysql、sys 等不对外授权。 数据库中不允许有名字为 “dba” 的账号,初始化数据库后需要将该用户删除。...库名、表名、字段名⽀持最多 64 个字符,但为了统一规范、易于辨识以及减少传输量,禁⽌超过 32 个字符。 【FAQ-1-03】 库名、表名、字段名禁止使用 MySQL 保留字。

    1.4K20

    MySQL数据库表设计规范

    一、数据库设计 1、一般都使用 INNODB 存储引擎,除非读写比率<1%,才考虑使用 MYISAM 存储引擎;其 他存储引擎请在 DBA 的建议下使用。...2、Stored procedure (包括存储过程,函数,触发器)对于 MYSQL 来说还不是很成熟, 没有完善的出错记录处理,不建议使用。...二、数据库对象设计规范 1、表 设计 a)在设计时尽量包含两个日期字段:crt_time(创建日期),upd_time(修改日期)且 非空, 对表的记录进行更新的时候,必须包含对 upd_time字段的更新...h)由于MYSQL表DDL维护成本很高,所以在适当的时候,可以有一定的字段容余。 比如:Value1,Value2,Value3 这样的字段。...e) 外键约束一般不在数据库上创建,只表达一个逻辑的概念,由程序控制。 f) 当万不得已必须使用外健的话,必须在外健列创建 INDEX。

    2.8K30

    数据库MySQL-设计规范

    一、MYSQL数据库设计规范 1、数据库命名规范 a、采用26个英文字母(区分大小写)和0-9的自然数(经常不需要)加上下划线’_'组成; b、命名简洁明确(长度不能超过30个字符); c、例如:user..., stat, log, 也可以wifi_user, wifi_stat, wifi_log给数据库加个前缀; d、除非是备份数据库可以加0-9的自然数:user_db_20151210; 2、数据库表名命名规范...user_role_relation, user_role_right, user_role_right_relation 注:表前缀’user_'可以有效的把相同关系的表显示在一起; 3、数据库表字段名命名规范...eamil, tickit, status, mobile, add_time; c、每个表中必须有自增主键,add_time(默认系统时间) d、表与表之间的相关联字段名称要求尽可能的相同; 4、数据库表字段类型规范...); IP地址最好使用int类型; 固定长度的类型最好使用char,例如:邮编; 能使用tinyint就不要使用smallint,int; 最好给每个字段一个默认值,最好不能为null; 5、数据库表索引规范

    98210

    MySQL数据库如何实现AX规范

    本文我们来讨论 MySQL 的 XA 规范有哪些应用相关的内容。...MySQL 为我们提供了分布式事务解决方案,在前面的内容中 聊一聊分布式事务的解决方案 提到过 binlog 的同步,其实是 MySQL XA 规范的一个应用,那么 XA 规范是如何定义的,具体又是如何应用的呢...今天我们一起来看一下 XA 规范相关的内容。 MySQL 有哪些一致性日志 问你一个问题,如果 MySQL 数据库断电了,未提交的事务怎么办?...目前,主流数据库都提供了对 XA 的支持,在 JMS 规范中,即 Java 消息服务(Java Message Service)中,也基于 XA 定义了对事务的支持。...MySQL 外部 XA 主要应用在数据库代理层,实现对 MySQL 数据库的分布式事务支持,例如开源的数据库中间层,比如淘宝的 TDDL、阿里巴巴 B2B 的 Cobar 等。

    23111

    MySQL规范

    数据库命令规范 所有数据库对象名称必须使用小写字母并用下划线分割 所有数据库对象名称禁止使用mysql的保留关键字(如果表名中包含关键字查询时,需要将其用单引号括起来) 数据库对象的命名要做到见名识意...,会造成列上的索引失效,导致查询效率降低) 数据库基本设计规范 所有表必须用innodb存储引擎 支持事务,行级锁,更好的恢复性,高并发性能更好 数据库的表和字符集统一使用UTF-8 兼容性更好,...禁止从开发环境,测试环境直接连接生成环境数据库 数据库字段设计规范 1、优先选择符合存储需要的最小的数据类型 原因 列的字段越大,建立索引时所需要的空间也就越大,这样一页中所能存储的索引节点的数量也就越少也越少...数据库SQL开发规范 1、建议使用预编译语句进行数据库操作 预编译语句可以重复使用这些计划,减少SQL编译所需要的时间,还可以解决动态SQL所带来的SQL注入的问题 只传参数,比传递SQL语句更高效...:一个SQL只能使用一个CPU进行计算 3、SQL拆分后可以通过并行执行来提高处理效率 数据库操作行为规范 大批量操作可能会造成严重的主从延迟 主从环境中,大批量操作可能会造成严重的主从延迟,大批量的写操作一般都需要执行一定长的时间

    1.3K20

    蓝鲸平台MySQL数据库管理规范建议

    蓝鲸平台MySQL数据库管理规范建议.jpg MySQL作为蓝鲸平台存取数据的主要数据库,其稳定性关系到蓝鲸平台的使用体验,而其数据安全性则可能关系到企业IT资产相关信息,在安装和维护蓝鲸平台的过程中应引起足够重视...MySQL升级 1.问题分析 蓝鲸平台默认安装的MySQL版本为5.5.24,一般不符合安全扫描的版本要求,为了避免在使用过程中由于安全问题需要重新升级数据库,建议在完成平台安装后及时进行数据库升级,此时数据库还没存入业务数据...2、删除所有日志后的处理方法 如果已经删除了所有的日志而无法启动数据库,此时可以按照如下方法处理: 在datadir目录下找到mysql-bin.index文件,该文件是记录数据库里的binlog信息,...清空该文件内容,重启数据库,此时日志会重置为1号,数据库恢复正常。...表清空操作 1.问题分析 由于数据库里某些日志表太大,影响查询和插入表的效率,有时会做清空表的操作,而管理员维护MySQL数据库时习惯使用图形工具如Navicat,当表的数据比较大时,从图形工具点击清空表

    2.6K20

    MySQL 数据库规范--调优篇(终结篇)

    前言 这篇是MySQL 数据库规范的最后一篇--调优篇,旨在提供我们发现系统性能变弱、MySQL系统参数调优,SQL脚本出现问题的精准定位与调优方法。...如上图所示: 数据库优化维度有四个:硬件、系统配置、数据库表结构、SQL及索引优化成本:硬件>系统配置>数据库表结构>SQL及索引优化效果:硬件<系统配置<数据库表结构<SQL及索引 2.MySQL 慢查询分析...2.1 mysqldumpslow分析慢查询 mysqldumpslow 是MySQL自带的分析数据库慢查询的原生利器,使用方法如下: mysqldumpslow -t 3 /data/mysql/log...####3.选择合适的数据类型 可以参考MySQL开发规范--设计篇中的1.6 数据表设计与规划 如下图是常用字段类型的选择建议: ?...5.反范式化设计(表结构) 关于范式的理解,请参考--MySQL 数据库规范--设计篇1.1 数据库表的设计范式(三范式&反范式)先看一个不满足第三范式的数据表设计: ?

    96530

    MySQL数据库开发规范知识点速查

    数据库设计规范 命名规范 基本设计规范 索引设计规范 字段设计规范 SQL开发规范 操作行为规范 命名规范 对象名称使用小写字母并用下划线分割 禁止使用MySQL保留关键字 见名识义,最好不超过32个字符...基本设计规范 所有表用Innodb存储引擎 支持事务 行级锁 更好的恢复性 高并发的性能更好 数据库和表的字符集统一使用UTF-8,统一可避免乱码 所有表和字段添加注释( COMMENT从句) 尽量控制单表数据量...修改预留字段比增加还麻烦,涉及对表的锁定 禁止在数据库中存储图片,文件等二进制数据 禁止在线上做数据库压力测试 禁止从开发或测试环境直接连接生产环境数据库 索引设计规范 限制每张表的索引数量,建议单表索引不超过...MySQL外键会建立索引 不建议使用外键约束 表与表之间的关联键建立索引是必须的 外键会影响父表和子表的写操作而降低性能(检查约束导致的) 字段设计规范 优先选择符合存储需要的最小的数据类型 将字符串转化为数字类型存储...只需要查询就别给其他操作权限 数据库账号只能在同一个DB下使用,不允许跨库 程序的账号原则上不允许有drop权限 参考 高性能可扩展MySQL数据库设计及架构优化,sqlercn,https://coding.imooc.com

    1.5K110
    领券