数据库
爱写代码的甘哥
这个作者很懒,什么都没留下…
展开
-
MYSQL 数据库总体规范
(1)不在数据库做运算:cpu计算务必移至业务层。 (2)控制单表数据量:单表记录控制在1000w。 (3)控制列数量:字段数控制在20以内。 (4)平衡范式与冗余:为提高效率牺牲范式设计,冗余数据。 (5)拒绝3B:拒绝大sql,大事务,大批量。 (6)表、字段、索引等命名规范见如下附件;禁止null字段。 (7)尽量少用view,function,procedure,trigger,原创 2017-04-11 09:15:13 · 216 阅读 · 0 评论 -
MYSQL调优4-优化sql
1. Sql语句优化原则优化需要优化的Query定位优化对象性能瓶颈从Explain入手尽可能在索引中完成排序只取自己需要的Column尽可能避免复杂的join和子查询 2. 优化limitselect * from test1 order by id limit 99999,10原语句虽然使用了id索引,但是相当于从第一行定位到99999行再去扫描后10行,相当于转载 2017-04-12 10:50:08 · 198 阅读 · 0 评论 -
MYSQL调优3-索引
索引上一章我们学习了使用explain来生成一个查询执行计划(QEP),从而发现语句存在的问题。在explain返回的结果中,有三个是和索引有关的(possible key、key、extra),可见索引在改善查询效率上的显著地位。这一章,我们将全方位讲解如何使用索引来优化我们的数据库。1. 索引的作用索引的原理是利用特殊的查找算法(如二叉树算法),限制访问的行数,提高访问效率。转载 2017-04-12 09:59:50 · 218 阅读 · 0 评论 -
MYSQL优化案例
1、加索引 2、数字类型规范 3、加冗余字段 4、用in、union all 替换or 5、减少模糊查询字段 6、3张表以上SQL拆分 7、硬件扩展 8、其他1.MySQL优化案例-加索引 这个不用列举具体例子了,给大家看下TMS的两张张表,这些都是优化的时候加上的索引, 索引可以解决95%的sql性能问题!2. MySQL优化案例-数字类型规范 数字类型规范基本的有: 1原创 2017-04-11 17:15:17 · 317 阅读 · 0 评论 -
MYSQL调优2-数据库性能分析Explain命令
上一章我们将了如何发现慢查询并把语句记录到日志中,那么在发现慢查询后,要怎样才能知道语句的问题发生在哪里。本章将介绍怎样使用MySQL提供的数据库性能分析命令,对sql语句进行分析。数据库性能分析Explain命令Explain的作用是生成一个QEP(查询执行计划),可以帮助我们在不真正执行某个sql语句时,就看到mysql怎样执行,这样方便我们去分析sql指令的好坏。执行如下语句Explain转载 2017-04-11 16:52:07 · 364 阅读 · 0 评论 -
MYSQL调优1-发现慢查询
一、 发现慢查询如何从一个大项目中,迅速的定位执行速度慢的语句,这是本章节将要解决的问题。1. 慢查询的定义怎样的查询才算是慢查询,有没有一个量化的标准呢?慢查询定义 慢查询是指执行时间超过慢查询时间的sql语句。查看慢查询时间的方法[plain] view plain copy print?show variables like ‘long_qu转载 2017-04-11 15:44:05 · 435 阅读 · 0 评论 -
MySQL几个概念
(1)limit m,n 和 limit m的区别 limit m,n 是[m,m+n]列; limit m是[0,m](2)驱动表 EXPLAIN 结果中,第一行出现的表就是驱动表(Important!) 对驱动表可以直接排序,对非驱动表(的字段排序)需要对循环查的合并结果(临时表)进行排序 [驱动表] 的定义为: 1)指定了联接条件时,满足查询条件的记录行数少的表为[驱动表]; 2原创 2017-04-11 09:31:00 · 265 阅读 · 0 评论 -
MYSQL数据库规范-sql
(1)sql语句尽可能简单,一条sql只能在一个cpu运算大语句拆小语句,减少锁时间,一条大sql可以堵死整个库; (2)简单的事务,事务时间尽可能短 【bad case】 分布式事务根据根据接口执行提交事务:超时等造成数据死锁、数据不一致等问题 上传图片事务 – 参考阿里和银行接口 对账 (3)避免使用trig/func 触发器、函数不用 客户端程序取而代之 (4)OR改写为IN()原创 2017-04-11 09:28:16 · 264 阅读 · 0 评论 -
MYSQL数据库规范-索引
(1)谨慎合理使用索引改善查询、减慢更新索引一定不是越多越好(能不加就不加,要加的一定得加)覆盖记录条数过多不适合建索引,例如“性别” (2)字符字段必须建前缀索引 alter table test.test add key (city(7)); (3)不在索引做列运算【bad case】select id where age +1 = 10;(4)innodb主键推荐使用自增原创 2017-04-11 09:24:22 · 298 阅读 · 0 评论 -
MYSQL数据库规范-字段规范
(1)用好数值类型tinyint(1Byte)smallint(2Byte)mediumint(3Byte)int(4Byte)bigint(8Byte)【bad case】int(1)/int(11) (2)字符转化为数字用int而不是char(15)存储ip (3)优先使用enum或set 例如:sex enum (‘F’,‘M’) (4)避免使用NULL字段NULL原创 2017-04-11 09:19:02 · 406 阅读 · 0 评论 -
ORACLE数据库一些使用技巧
1 . 根据时间显示每分钟的记录数 oracleselect to_char(les_deal_time,'yyyy-MM-dd HH24:mi'),count(*) from ods_cust_order where source_sn like 'LBC82868563%' and les_deal_flag='7' group by to_char(les_deal_time,'yyyy-原创 2017-04-12 11:07:45 · 337 阅读 · 0 评论