> 修改配置使Linux下MySQL不区分大小写 1、ROOT用户登录,vi /etc/my.cnf 2、找到 [mysqld],在里面加入一行 lower_case_table_names=1 3、重启数据库...注意1:修改此配置时,会导致原来代码中的大写的数据库名读不了,而且MySQL-Front工具显示小写但打不开数据库,而phpMyAdmin则仍然显示大写名且可以管理,数据库名在此状态下大小写不统一,非常尴尬...注意2:修改此配置时,会导致原来的大写的表名读取不了,MySQL-Front中能显示,但打不开表,phpMyAdmin中则没有这个表显示出来。...所以解决方案是,先截图保存现在的数据库表名,在网站低峰期修改表名为小写,再修改这个配置项,然后重启MySQL。注意修改表名到重启MySQL成功之前这一段时间,代码运行是会报错的。...三、写的代码中SQL关键字使用大写作为规范 比如 SELECT sth FROM theorder WHERE swhere ORDER BY id DESC; 这样用大写关键字写可以非常直观地分辨出语句的段落
SQL规范: 关键字是大写. SELECT * FROM user; where 1. 条件比较 可以判断null值,=是不可以判断null值 >= <= !
数据库命令规范 所有数据库对象名称必须使用小写字母并用下划线分割 所有数据库对象名称禁止使用mysql的保留关键字(如果表名中包含关键字查询时,需要将其用单引号括起来) 数据库对象的命名要做到见名识意...开头并以日期为后缀,备份表以 bak 为前缀并且以日期为后缀 所有存储相同数据的列名和列类型必须一致(一半作为关联列类型不一致会自动进行数据类型隐形转换,会造成列上的索引失效,导致查询效率降低) 数据库基本设计规范...而且对于这种数据,Mysql还是要进行二次查询,会使sql性能变得很差,但是不是说一定不能使用这样的数据类型。...索引设计规范 限制每张表上的索引数量,建议单张不超过5个 禁止给表中的每一列都建立单独的索引 每个Innoodb表必须有个主键 常见索引列建议 1、出现在SELECT、UPDATE、DELETE...同时对于关联操作来说,会产生临时表操作,影响查询效率Mysql最多允许关联61个表,建议不超过5个。
不在数据库做运算:cpu计算务必移至业务层 控制单表数据量:单表记录控制在1000w 控制列数量:字段数控制在20以内 平衡范式与冗余:为提高效率牺牲范式...
图片3 项目配置(1)在导入Go moudles项目时需要勾选这个Enable Go modules integration,可以让IDE更快导入和分析代码。...注意此时环境变量别再配置这三个变量,也别在 GoLand Setting 内配置这三个变量)。
命名规范 库名、表名、字段名必须使用小写字母,并采用下划线分割 库名、表名、字段名禁用超过32个字符。...须见名知意 库名、表名、字段名禁用使 MySQL保留字 临时库、表名必须以tmp为前缀,并以日期为后缀 备份库、表必须以bak为前缀,并以日期为后缀 基础规范 使用INNODB存储引擎 表字符集使用utf8mb4...UNSIGNED存储非负整数 INT类型固定占用4字节存储 使用timestamp存储时间 使用INT UNSIGNED存储IPV4 使用VARBINARY存储大写敏感的变 字符串 禁用在数据库中存储明文密码 索引规范
强烈建议字段为 NOT NULL,并设置默认值 禁止储存图片、文件、视频等 使用 tingint 代替 ENUM 禁止使用外键 少用拆分 BLOB、TEXT字段 控制 字段数量/尽可能小的字段/命名规范
MySQL XA实现分布式事务的原理与应用 XA规范与DTP模型 XA规范定义了分布式事务处理(DTP)模型中事务管理器(TM)与资源管理器(RM)的交互方式。...MySQL XA实战示例 -- 事务分支定义 XA START 'xid1'; INSERT INTO operation_table VALUES (100, 'get-cdn-log'); XA END...对比分析 方案 一致性 性能 复杂度 适用场景 MySQL XA 强一致 低 低 低并发、跨库事务 数据分片 弱一致 高 中 业务边界清晰的系统 TCC/最终一致 最终一致 高 高 高并发、允许短暂不一致
⽚、文件等大数据 禁止在线上做数据库压力测试 禁⽌从测试、开发环境直连线上数据库 命名规范 库名、表名、字段名禁⽌止超过32个字符。...库名、表名、字段名禁⽌止使⽤用MySQL保留字 临时库、表名必须以tmp为前缀,并以日期为后缀,日期格式为YYYY[MM][DD][HH][mm][ss] 比如tmp_aaa_2016、tmp_aaa_...开发设计规范 禁⽌使用分区表。 拆分大字段和访问频率低的字段,分离冷热数据。 用Hash进⾏散表,表名后缀使⽤⼗进制数,下标从0开始。...避免在数据库中进⾏数学运算(MySQL不擅长数学运算和逻辑判断) 不要用select *,查询哪几个字段就select 这几个字段 SQL中使用到‘or’的改写为用‘in’,‘or’的效率没有‘in’的效率高...流程规范 所有新建表要估算最大数据量、最高并发访问量,并告知DBA。 所有的建表操作需要提前告知DBA该表涉及的查询SQL,以及预估高并发的SQL。
目的 规范业务系统对MySQL数据库在设计、开发、运维等阶段所必须遵循的原则,旨在控制对数据库的滥用,收敛不合理的使用形式,保障数据库安全、稳定、高效的运行以及业务运营的稳定性。...适用范围 所有使用MySQL的业务系统。 数据库设计规范 【强制】所有的表必须指定主键(Primary Key),主键是尽可能小的INT类型,并且是AUTO_INCREMENT自增长形式。...(这样不但节省存储空间,更重要的是可以提升检索速度) 【强制】库名、表名以及字段名的命名不使用MySQL保留的关键字。...数据库应用开发规范 【强制】数据库访问信息统一配置,必须可以满足一键切换访问实例。
所有的数据库对象名称必须使用小写字母并用下划线分割(MySQL大小写敏感,名称要见名知意,最好不超过32字符)禁止在数据中存储图片,文件二进制数据(使用文件服务器)禁止在线上做数据库压力测试禁止从开发环境...NULL值做特别的处理)使用timestamp或datetime类型来存储时间同财务相关的金额数据,采用decimal类型(不丢失精度,禁止使用 float 和 double)所有的数据库对象名称禁止使用MySQL...字符集必须统一,避免由于字符集转换产生的乱码,汉字utf8下占3个字节)所有表和字段都要添加注释COMMENT,从一开始就进行数据字典的维护建议使用物理分表的方式管理大数据尽量做到冷热数据分离,减小表的宽度(mysql...禁止给表中的每一列都建立单独的索引区分度最高的列放在联合索引的最左侧尽量把字段长度小的列放在联合索引的最左侧尽量避免使用外键(禁止使用物理外键,建议使用逻辑外键)尽量使用 union all 代替 union拆分复杂的大SQL为多个小SQL( MySQL
一: 基础规范 1、使用InnoDB存储引擎 支持事务、行级锁、并发性能更好、CPU及内存缓存页优化使得资源利用率更高 2、推荐使用utf8mb4字符集 无需转码,无乱码风险, 支持emoji表情以及部分不常见汉字...这些功能很可能将数据库拖跨,业务逻辑放到服务层具备更好的扩展性,能够轻易实现“增机器就加性能” 5、禁止存储文件 文件存储在文件系统,数据库里存URI 6、控制单表数据量 单表记录控制在千万级 二:命名规范...高并发情况下容易造成数据库性能下降,大数据高并发业务场景数据库使用以性能优先 三:字段设计规范 1、把字段定义为NOT NULL并且提供默认值 a)null的列使索引/索引统计/值比较都更加复杂,...对MySQL来说更难优化 b)null 这种类型MySQL内部需要进行特殊处理,增加数据库处理记录的复杂性;同等条件下,表中有较多空字段的时候,数据库的处理性能会降低很多 c)null值需要更多的存储空间...5、为提高效率可以牺牲范式设计,冗余数据 a)不是频繁修改的字段 b)不是 varchar 超长字段,更不能是 text 字段 四:索引设计规范 1、禁止在更新十分频繁、区分度不高的属性上建立索引
开发规范对象命名命名规范的对象,是指数据库SCHEMA、表TABLE、字段COLUMN、索引INDEX、约束CONSTRAINTS等【强制】凡是需要命名的对象,其标识符不能超过30个字符【强制】名称必须以英文字母开头...为前缀,以日期yyyymmdd为后缀,比如 tmp_order_20160425,正常业务用到的临时表、中间表,前后缀尽量不要包含 tmp 以免造成歧义库表设计【强制】生产/UAT环境建库建表,请参考《mysql...因为null值会影响cordinate统计和优化器对索引的选择【强制】禁止在列上配置字符集【建议】使用unsigned int存储IPv4,不要使用char(15)ip转int使用 INET_ATON...sql_mode为严格模式(STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION),在此模式下任何不支持的语法或者数据校验不合格的,都将直接返回错误【建议】日志类数据不建议存储在MySQL...建议】禁止使用ENUM,可使用TINYINT代替增加新的ENUM值要做DDL操作;ENUM的内部实际存储就是整数而非字符串;【建议】禁止使用OR条件,必须改为IN查询,并注意in的个数小于200旧版本mysql
一、命名规范 库名、表名、字段名必须使用小写字母并采用下划线分割; 库名、表名、字段名禁 止超过32个字符,须见名知意; 库名、表名、字段名支持最多64个字符,统一规范、易于辨识以及减少传输量不要超过...32; 库名、表名、字段名禁止使用MySQL保留关键字; 临时库、临时表名必须以tmp为前缀并以日期为后缀; 备份库、备份表名必须以bak为前缀并以日期为后缀; 二、基本规范 使用...禁止使用分区表 MySQL的分区表实际性能不是很好,且管理维护成本较高 拆分大字段和访问频率低的字段,分离冷热数据 用HASH进行散表,表名后缀使用十进制数,下标从0开始 首次分表尽量多的分...really need VARCHAR(N),N表示的是字符数不是字节数,比如VARCHAR(255),可以最大可存储255个汉字,需要根据实际的宽度来选择NVARCHAR(N),N尽可能小,因为MySQL...最擅长的是单表的主键/二级索引查询 Join消耗较多的内存,产生临时表 避免在数据库中进行数学运算 容易将业务逻辑和DB耦合在一起 MySQL不擅长数学运算和逻辑判断 无法使用索引
基础规范 表存储引擎必须使用 InnoDB 表字符集默认使用 utf8,必要时候使用 utf8mb4 说明: 1)通用,无乱码风险,汉字3字节,英文1字节 2)`utf8mb4` 是 `utf8`...扩展性、移植性较差 复制代码 禁止在数据库中存储大文件,例如照片,可以将大文件存储在对象存储系统,数据库中存储路径 禁止在线上环境做数据库压力测试 测试,开发,线上数据库环境必须隔离 命名规范...说明:MySQL 在 Windows 下不区分大小写,但在 Linux 下默认是区分大小写。因此,数据库名、表名、字段名,都不允许出现任何大写字母,避免节外生枝。...库备份必须以 bak 为前缀,以日期为后缀 从库必须以 -s 为后缀 备库必须以 -ss 为后缀 表设计规范 单实例表个数必须控制在 2000 个以内 单表分表个数必须控制在 1024 个以内...复制代 以上内容,整理自阿里巴巴 Java开发手册和58到家MySQL军规升级版。
一、基础规范 1) 使用InnoDB存储引擎 2) 数据库字符集使用UTF8,校对字符集使用utf8_general_ci 3) 所有表、字段都尽量添加注释 4) 库名、表名、字段名使用小写字母...,禁止超过32个字符,须见名知意 5) 非唯一索引以 “idx_字段1_字段2” 命名,唯一索引必须以 “uniq_字段1_字段2” 命名 二、查询规范 1) SQL语句尽可能简单,大的SQL...IN 10) Where字句中同一个表的不同字段组合建议小于5组(否则考虑分表) 11) 禁止单条语句同时更新多个表 12) 事务要尽量简单,整个事务的时间长度不要太长 三、表设计规范...字段很难查询优化,NULL字段的索引需要额外空间,NULL字段的复合索引无效) 6) 表必须有主键,不使用更新频繁的列做主键、尽量不使用字符串列做主键,尽量使用非空的唯一自增键做主键 四、索引设计规范...尽量不要在频繁更新的列上建立索引 6) 不在低基数列上建立索引,例如状态、类型等 7) 不在索引列进行数学运算和函数运算(参与了运算的列不会引用索引) 8) 复合索引须符合最左前缀的特点建立索引(mysql
需要添加 user=root 参数到配置文件中 我们再次启动MYSQL 发现还是无法启动 ? 本次的提示中主要无法启动的原因是 server-id 在配置中没有,导致无法启动 binlog 。...通过此次的事情,可以看出,MYSQL 和其他数据库的不同,尤其在配置参数上来说,看上去可能少一个参数,少两个参数对于一个大约有400多个接近500个配置参数的MYSQL 来说没有什么什么了不起,但MYSQL...的配置参数是一环套一环的,所以了解基本或常用的MYSQL的参数是很有必要的。...同时一般来说我都是建议配置MYSQL 要有一个模板的,参数的模板,并且可以根据参数的必要性来进行一些必要的注释,或者根据MYSQL的不同需求,来配置几个不同的模板。...所以MY.CNF 的规范化还是很有必要的。 ?
3、 禁止使用分区表 Mysql 分区表技术还是不是很成熟,而且对分区键有严格要求,分区表变大后对于表备份恢复都有很大困难,建议在业务端使用 sharding 技术。...4、 禁止在数据库中存储明文密码 如果需要存储 MySQL 密码可以用 MySQL 内置函数 password()对明文密码进行 MD5 进行加密。...规范项: 1、建表字符集使用 UTF8 或者 UTF8mb4 UTF8 统一而且通用,不会出现转码出现乱码风险。...定义为 Not Null 原因如下: MySQL 数据库中每个为 NULL 的列都需要额外的 1 个字节进行存储,浪费空间资源。...3、建议查询中避免隐式转换 MySQL 中如果查询字段与表定义字段不同则会发生隐式转换,从而无法用到索引导致查询效率低下。 4、建议不要在 MySQL 数据库中存放业务逻辑。
规范总结 所有数据库对象名称必须使用小写字母并用下划线分割 所有数据库对象名称禁止使用 MySQL 保留关键字【设计表后逐一排查】 所有表必须使用 Innodb 存储引擎,数据库和表的字符集统一使用...第二范式:需要确保数据库表中每一列都和主键相关 第三范式:不允许数据冗余 数据库命名规范 1.所有数据库对象名称必须使用小写字母并用下划线分割 表名:users,users_like-videos...MySQL对象名默认规定大小写敏感,且在生产环境中MySQL通常运行在Linux系统下,Linux系统本身也是大小写敏感的。...数据库基本设计规范 1....通常存储于文件服务器,数据库只存储文件地址信息 数据库字段设计规范 1.
参考:https://zhuanlan.zhihu.com/p/550146428