数据库
文章平均质量分 77
_吹雪_
这个作者很懒,什么都没留下…
展开
-
数据库范式
范式:英文名称是 Normal Form,它是英国人 E.F.Codd(关系数据库的老祖宗)在上个世纪70年代提出关系数据库模型后总结出来的,范式是关系数据库理论的基础,也是我们在设计数据库结构过程中所要遵循的规则和指导方法。目前有迹可寻的共有8种范式,依次是:1NF,2NF,3NF,BCNF,4NF,5NF,DKNF,6NF。通常所用到的只是前三个范式,即:第一范式(1NF),第二范式(2NF)...转载 2018-06-21 23:33:21 · 243 阅读 · 0 评论 -
高性能MySQL读书笔记
chapter1: InnoDB采用MVCC来支持高并发,默认级别是REPEATABLE READ,并且通过间隙锁策略防止幻读的出现,间隙锁使得InnoDB不仅仅锁定查询涉及的行,还会对索引中的间隙进行锁定以防止幻影行的插入; InnoDB也支持通过特定的语句进行显式锁定,这些语句不属于SQL规范: select … lock in share mode select … for upda...原创 2018-06-17 12:26:11 · 284 阅读 · 0 评论 -
MySQL 各种连接比较
Assuming you're joining on columns with no duplicates, which is a very common case:An inner join of A and B gives the result of A intersect B, i.e. the inner part of a Venn diagram intersection.An o...原创 2017-04-06 23:00:55 · 433 阅读 · 0 评论 -
MySQL索引原理及查询优化小结
1.MySQL索引原理1.1 索引目的索引的目的在于提高查询效率,可以类比字典,如果要查“mysql”这个单词,我们肯定需要定位到m字母,然后从上往下找到y字母,再找到剩下的sql。如果没有索引,那么你可能需要把所有单词看一遍才能找到你想要的,如果我想找到m开头的单词呢?或者ze开头的单词呢?是不是觉得如果没有索引,这个事情根本无法完成?1.2 索引原理除了词典,生活中随处可见索引...原创 2017-04-04 21:01:47 · 1237 阅读 · 0 评论 -
分析 MySQL 语句运行时间
为了验证select 1 与 select 1 from tableName 与 select * from tableName的执行效率,需要测试一下各自执行的时间。于是总结一下,查看mysql语句运行时间的方法。1. show profiles。mysql 版本 Query Profiler是MYSQL自带的一种query诊断分析工具,通过它可以分析出一条SQL语句的性能瓶颈在...原创 2018-07-08 22:43:13 · 863 阅读 · 0 评论 -
数据库事务隔离级别和锁实现机制
1. 数据库事务处理中出现的数据不一致的情况在多个事务并发做数据库操作的时候,如果没有有效的避免机制,就会出现种种问题。大体上有四种问题,归结如下:1.1 丢失更新如果两个事务都要更新数据库一个字段X,x=100 事务A 事务B 读取X=100 读取X=100 写入x=X+100 写入x=X+200 事务结束x=200 事务结束...转载 2018-07-02 23:54:48 · 401 阅读 · 0 评论 -
Innodb中的事务隔离级别和锁的关系
0. 前言对于加锁的处理,可以说就是数据库对于事务处理的精髓所在。本文简单分析了MySQL中InnoDB引擎的加锁机制。1. 一次封锁or两段锁?因为有大量的并发访问,为了预防死锁,一般应用中推荐使用一次封锁法,就是在方法的开始阶段,已经预先知道会用到哪些数据,然后全部锁住,在方法运行之后,再全部解锁。这种方式可以有效的避免循环死锁,但在数据库中却不适用,因为在事务开始阶段,数据库...转载 2018-07-02 23:46:10 · 181 阅读 · 0 评论 -
MySQL实现分组排序
想要根据用户分组,以该用户的下单时间为降序,提取所有用户的第二个订单信息。这属于分组排序,在Oracle有内置函数可以实现,而在mysql就有点麻烦:CREATE TABLE user_orders (orders_id INT UNSIGNED NOT NULL,user_id INT UNSIGNED NOT NULL,add_time INT UNSIGNED NOT NULL,P...转载 2018-10-12 19:45:36 · 1757 阅读 · 1 评论