MySQL军规升级版(转)】的更多相关文章

一.基础规范 表存储引擎必须使用InnoDB 表字符集默认使用utf8,必要时候使用utf8mb4 解读:(1)通用,无乱码风险,汉字3字节,英文1字节(2)utf8mb4是utf8的超集,有存储4字节例如表情符号时,使用它 禁止使用存储过程,视图,触发器,Event 解读:(1)对数据库性能影响较大,互联网业务,能让站点层和服务层干的事情,不要交到数据库层(2)调试,排错,迁移都比较困难,扩展性较差 禁止在数据库中存储大文件,例如照片,可以将大文件存储在对象存储系统,数据库中存储路径 禁止在线…
MySQL 基础篇 三范式 MySQL 军规 MySQL 配置 MySQL 用户管理和权限设置 MySQL 常用函数介绍 MySQL 字段类型介绍 MySQL 多列排序 MySQL 行转列 列转行 MySQL NULL 使用带来的坑 MySQL AND 和 OR 联合使用带来的坑 MySQL 触发器的使用 转载: <58到家数据库30条军规解读> <赶集mysql军规> <58到家MySQL军规升级版> 基础规范 必须使用 InnoDB 存储引擎 解读:支持事务.行级锁…
先介绍一下<MySQL数据库开发的三十六条军规>,这里只介绍核心的,具体内容大家可以自行百度,这是从底层开发人员到管理者必须知道规范.出自58赶集. 写在前面的话: 总是在灾难发生后,才想起容灾的主要性: 总是在吃过亏后,才记得有人提醒过. 核心军规: 不在数据库做计算,CPU计算务必移至业务层: 控制单表数据量,单表记录控制在千万级: 控制列数量,字段数控制在20以内: 平衡范式与冗余,为提高效率可以牺牲范式设计,冗余数据: 拒绝3B(big),大SQL.大数据.大批量 介绍两个例子.这个适…
导语 来自一线的实战经验 每一条军规背后都是血淋淋教训 不要华丽,只要实用 若有一条让你受益,慰矣 主要针对数据库开发人员 总是在灾难发生后,才想起容灾的重要性 总是在吃过亏后,才记得曾经有人提醒过   目录 一,核心军规(5) 二,字段类军规(6) 三,索引类军规(5) 四,SQL类军规(15) 五,约定类军规(5)   一,核心军规 尽量不在数据库做运算 别让脚趾头想事情 那是脑瓜子的职责 让数据库多做她擅长的事情 尽量不在数据库做运算 复杂运算移到程序端CPU 尽可能简单应用MySQL 举…
总是在灾难发生后,才想起容灾的重要性.总是在吃过亏后,才记得曾经有人提醒过. 一,核心军规 不在数据库做计算,cpu计算务必移至业务层 控制单表数据量,单表记录控制在千万级 控制列数量,字段数控制在20以内 平衡范式与冗余,为提高效率可以牺牲范式设计,冗余数据 拒绝3B(big),大sql,大事务,大批量 二,字段类军规 用好数值类型tinyint(1Byte)smallint(2Byte)mediumint(3Byte)int(4Byte)bigint(8Byte)bad case:int(1…
总是在灾难发生后,才想起容灾的重要性.总是在吃过亏后,才记得曾经有人提醒过. 一,核心军规 不在数据库做计算,cpu计算务必移至业务层 控制单表数据量,单表记录控制在千万级 控制列数量,字段数控制在20以内 平衡范式与冗余,为提高效率可以牺牲范式设计,冗余数据 拒绝3B(big),大sql,大事务,大批量 二,字段类军规 用好数值类型tinyint(1Byte)smallint(2Byte)mediumint(3Byte)int(4Byte)bigint(8Byte)bad case:int(1…
个人认为以下军规主要为了适应海量数据场景,对于业务复杂性系统并一定完全按照此军规   一,核心军规 不在数据库做计算,cpu计算务必移至业务层 控制单表数据量,单表记录控制在千万级 控制列数量,字段数控制在20以内 平衡范式与冗余,为提高效率可以牺牲范式设计,冗余数据 拒绝3B(big),大sql,大事务,大批量   二,字段类军规 用好数值类型 tinyint(1Byte) smallint(2Byte) mediumint(3Byte) int(4Byte) bigint(8Byte) ba…
<58到家MySQL军规升级版> <数据库索引,到底是什么做的?> <MyISAM与InnoDB的索引差异究竟是啥?> <InnoDB,为何并发如此之高?> <快照读,在RR和RC下的差异> <InnoDB插入自增列,是表锁吗?> <InnoDB并发插入,会不会互斥?> <InnoDB,select为何会阻塞insert?> <InnoDB如何巧妙实现,事务的4种隔离级别?> <别废话,各种S…
InnoDB,5项最佳实践,知其所以然? 原创: 58沈剑 架构师之路 昨天 缓存讲了一个月<缓存架构,一篇足够>.今天,开始写数据库. 第一篇,说说MySQL两个最常用的存储引擎,MyISAM和InnoDB.照自己的理解,把一些知识点总结出来,不只说知识点,多讲“为什么”. 一.关于count(*)知识点:MyISAM会直接存储总行数,InnoDB则不会,需要按行扫描. 潜台词是,对于select count(*) from t; 如果数据量大,MyISAM会瞬间返回,而InnoDB则会一行…
优先使用INNER JOIN 多表关联查询,扫描的行尽量少         关联的时候下条件减少扫描的行数 SELECT     ... FROM     ad_ad_summary_for_pos_eq sum4eq INNER JOIN (SELECT id, NAME FROM wlw_area WHERE grade = 2) area ON area.id = position.city_id 避免使用SELECT *         你从你的表里返回每个列,甚至后期加的列.被传递到了…
一.核心军规         - 不在数据库做运算:cpu计算务必移至业务层         - 控制单表数据量:单表记录控制在1000w         - 控制列数量:字段数控制在20以内         - 平衡范式与冗余:为提高效率牺牲范式设计,冗余数据         - 拒绝3B:拒绝大sql,大事物,大批量 二.字段类军规 - 用好数值类型             tinyint(1Byte)             smallint(2Byte)             medi…
MySQL 基础篇 三范式 MySQL 军规 MySQL 配置 MySQL 用户管理和权限设置 MySQL 常用函数介绍 MySQL 字段类型介绍 MySQL 多列排序 MySQL 行转列 列转行 MySQL NULL 使用带来的坑 MySQL AND 和 OR 联合使用带来的坑 MySQL 触发器的使用 转载:<Mysql中的触发器> 什么是触发器 触发器(TRIGGER)是 MySQL 的数据库对象之一,从5.0.2版本开始支持.该对象与编程语言中的函数非常类似,都需要声明.执行等.但是触…
MySQL 基础篇 三范式 MySQL 军规 MySQL 配置 MySQL 用户管理和权限设置 MySQL 常用函数介绍 MySQL 字段类型介绍 MySQL 多列排序 MySQL 行转列 列转行 MySQL NULL 使用带来的坑 MySQL AND 和 OR 联合使用带来的坑 MySQL 触发器的使用 数据准备: CREATE TABLE products ( prod_id ) NOT NULL , vend_id ) NOT NULL , prod_name ) NOT NULL , p…
MySQL 基础篇 三范式 MySQL 军规 MySQL 配置 MySQL 用户管理和权限设置 MySQL 常用函数介绍 MySQL 字段类型介绍 MySQL 多列排序 MySQL 行转列 列转行 MySQL NULL 使用带来的坑 MySQL AND 和 OR 联合使用带来的坑 MySQL 触发器的使用 NULL 无值(no value),它与字段包含 0 .空字符串或仅仅包含空格不同. 数据库字段允许空值,会遇到一些问题,这里整理一些 MySQL 设置列允许为 NULL 带来的坑. 数据准备…
MySQL 基础篇 三范式 MySQL 军规 MySQL 配置 MySQL 用户管理和权限设置 MySQL 常用函数介绍 MySQL 字段类型介绍 MySQL 多列排序 MySQL 行转列 列转行 MySQL NULL 使用带来的坑 MySQL AND 和 OR 联合使用带来的坑 MySQL 触发器的使用 数据准备: CREATE TABLE `teacher` ( `id` ) NOT NULL AUTO_INCREMENT, `name` ) NOT NULL, `age` ) NOT NU…
MySQL 基础篇 三范式 MySQL 军规 MySQL 配置 MySQL 用户管理和权限设置 MySQL 常用函数介绍 MySQL 字段类型介绍 MySQL 多列排序 MySQL 行转列 列转行 MySQL NULL 使用带来的坑 MySQL AND 和 OR 联合使用带来的坑 MySQL 触发器的使用 注意点: 数值类型:注意字段范围的选择. 日期和时间类型:注意 DATETIME 和 TIMESTAMP 的区别. 字符串类型:用的最多的是 CHAR 和 VARCHAR 类型,注意两者的区别…
MySQL 基础篇 三范式 MySQL 军规 MySQL 配置 MySQL 用户管理和权限设置 MySQL 常用函数介绍 MySQL 字段类型介绍 MySQL 多列排序 MySQL 行转列 列转行 MySQL NULL 使用带来的坑 MySQL AND 和 OR 联合使用带来的坑 MySQL 触发器的使用 数值型函数 函数名称 作用 ABS 求绝对值 SQRT 求二次方根 MOD 求余数 CEIL 和 CEILING 两个函数功能相同,都是返回不小于参数的最小整数,即向上取整 FLOOR 向下取…
失踪人口回归,近期换工作一波三折,耽误了不少时间,从今开始每周更新~ 索引是一种支持快速查询的数据结构,同时索引优化也是后端工程师的必会知识点.各个公司都有所谓的MySQL"军规",其实这些所谓的优化和规定,并不是什么高深的技术,只是要求大家正确建立和使用索引而已.工欲善其事必先利其器,想要正确运用索引,需要了解其底层实现原理,本文将探索关于索引的"是什么"以及"为什么". MySQL中关于索引的概念有很多,为了避免混淆,在上一篇文章中关于索引在…
MySQL 是一个跨世纪的伟大产品,它最早诞生于 1979 年,距今已经有 40 多年的历史了,而如今比较主流的 Java 语言也只是 1991 年才诞生的,也就是说 MySQL 要比 Java 的诞生还早十几年,不得不惊叹二者强大的生命力. MySQL 的应用十分广泛,像 Google.Taobao.Facebook.Twitter.Baidu.Tencent 等公司以及绝大多数互联网公司都能见到它的身影,MySQL 也一度是(目前也是)"数据库"的代名词. MySQL 之所以流行和…
传统数据库 上篇文章:聊聊数据库~开篇 https://www.cnblogs.com/dotnetcrazy/p/9690466.html 本来准备直接开讲NoSQL的(当时开篇就是说的NoSQL)考虑到有些同志可能连MySQL系都没接触过,所以我们2019说数据系的时候预计从MySQL(穿插MSSQL)开始,这篇文章就当试水篇,效果好就继续往下写~(这篇偏理论和运维) 1.1.MariaDB and MySQL 官方文档:https://mariadb.com/kb/zh-cn/mariad…
架构学习 1. Java 核心技术 1.1. 基础知识 1.1.1. 进制转换 1.1.2. 异常处理 1.1.3. List 分批代码 1.1.4. 字符串分割 1.1.5. 编码风格 1.2. 并发编程 1.2.1. 参考文章 1.2.2. 并发编程基础 1.2.3. 线程的安全性问题 1.2.4. 处理器内存模型 1.2.5. Java 内存模型(JMM) 1.2.6. volatile 关键字 1.2.7. synchronized 关键字 1.2.8. wait notify 1.2.…
互联网上一直流传着各大公司的 MySQL 军规,其中关于 join 的描述,有些公司不推荐使用 join,而有些公司则规定有条件的使用 join, 它们都是教条式的规定,也没有详细说其中的原因,这就很容出现只知道这么用,但是不知道为什么的情况 那到底能不能使用 join, 什么情况下适合用join,什么情况下不适合用 join, join 有哪些使用原则呢? 本文将详细讲述 join 的执行流程.分析 join 的复杂度,并解答上面的几个常见问题,让读者能详细了解 join 的原理,做到知其然,…
原文链接:https://segmentfault.com/a/1190000004711147 写在前面的话:总是在灾难发生后,才想起容灾的重要性:总是在吃过亏后,才记得曾经有人提醒过. (一)核心军规 (1)不在数据库做运算:cpu计算务必移至业务层 (2)控制单表数据量:单表记录控制在1000w (3)控制列数量:字段数控制在20以内 (4)平衡范式与冗余:为提高效率牺牲范式设计,冗余数据 (5)拒绝3B:拒绝大sql,大事物,大批量 (二)字段类军规 (6)用好数值类型 tinyint(…
[MySql]赶集网mysql开发36条军规 2012-05-14 14:02:33 分类: Linux   写在前面的话: 总是在灾难发生后,才想起容灾的重要性: 总是在吃过亏后,才记得曾经有人提醒过. (一)核心军规 (1)不在数据库做运算    cpu计算务必移至业务层: (2)控制单表数据量    int型不超过1000w,含char则不超过500w:    合理分表:    限制单库表数量在300以内: (3)控制列数量    字段少而精,字段数建议在20以内: (4)平衡范式与冗余…
MySQL 数据库开发的 36 条军规 写在前面的话: 总是在灾难发生后,才想起容灾的重要性: 总是在吃过亏后,才记得曾经有人提醒过. (一)核心军规 (1)不在数据库做运算:cpu计算务必移至业务层 (2)控制单表数据量:单表记录控制在1000w (3)控制列数量:字段数控制在20以内 (4)平衡范式与冗余:为提高效率牺牲范式设计,冗余数据 (5)拒绝3B:拒绝大sql,大事物,大批量 (二)字段类军规 (6)用好数值类型 tinyint(1Byte) smallint(2Byte) medi…
[赶集网] [MySql]赶集网mysql开发36条军规 (一)核心军规(1)不在数据库做运算   cpu计算务必移至业务层:(2)控制单表数据量   int型不超过1000w,含char则不超过500w:   合理分表:   限制单库表数量在300以内:(3)控制列数量   字段少而精,字段数建议在20以内:(4)平衡范式与冗余   效率优先:   往往牺牲范式:(5)拒绝3B   拒绝大sql语句:big sql   拒绝大事物:big transaction   拒绝大批量:big bat…
赶集网mysql开发36军规 写在前面的话: 总是在灾难发生后,才想起容灾的重要性: 总是在吃过亏后,才记得曾经有人提醒过. (一)核心军规 (1)不在数据库做运算:cpu计算务必移至业务层 (2)控制单表数据量:单表记录控制在1000w (3)控制列数量:字段数控制在20以内 (4)平衡范式与冗余:为提高效率牺牲范式设计,冗余数据 (5)拒绝3B:拒绝大sql,大事物,大批量 (二)字段类军规 (6)用好数值类型 tinyint(1Byte) smallint(2Byte) mediumint…
原文链接:微服务化的数据库设计与读写分离(来源:刘超的通俗云计算) 数据库永远是应用最关键的一环,同时越到高并发阶段,数据库往往成为瓶颈,如果数据库表和索引不在一开始就进行良好的设计,则后期数据库横向扩展,分库分表都会遇到困难. 对于互联网公司来讲,一般都会使用MySQL数据库. 一.数据库的总体架构 我们首先来看MySQL数据的总体架构如下: 这是一张非常经典的MySQL的系统架构图,通过这个图可以看出MySQL各个部分的功能. 当客户端连接数据库的时候,首先面对的是连接池,用于管理用户的连接…
一.基础规范 (1)必须使用InnoDB存储引擎 解读:支持事务.行级锁.并发性能更好.CPU及内存缓存页优化使得资源利用率更高 (2)必须使用UTF8字符集 解读:万国码,无需转码,无乱码风险,节省空间 (3)数据表.数据字段必须加入中文注释 解读:N年后谁tm知道这个r1,r2,r3字段是干嘛的 (4)禁止使用存储过程.视图.触发器.Event 解读:高并发大数据的互联网业务,架构设计思路是"解放数据库CPU,将计算转移到服务层",并发量大的情况下,这些功能很可能将数据库拖死,业务…
今天上午吐血整理了Oracle SQL性能优化的40条军规,其中很多规则也是适用于Mysql的,结果今晚发现这一篇文章——用尽洪荒之力整理的Mysql数据库32条军规,和我的竟有异曲同工之妙,当然不同的是这是由具有12年Java开发经验的老鸟写的,其见解和认识肯定比我的更加深刻,感谢前辈,现全文转载如下: --------------------------------------------------------------split line------------------------…