![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据库
L X D.
这个作者很懒,什么都没留下…
展开
-
MYSQL连接查询的优化
表连接算法Nested Loop Join(NLJ)算法:首先介绍一种基础算法:NLJ,嵌套循环算法。循环外层是驱动表,循坏内层是被驱动表。驱动表会驱动被驱动表进行连接操作。首先驱动表找到第一条记录,然后从头扫描被驱动表,逐一查找与驱动表第一条记录匹配的记录然后连接起来形成结果表中的一条记。被驱动表查找完后,再从驱动表中取出第二个记录,然后从头扫描被驱动表,逐一查找与驱动表第二条记录匹配的记录...原创 2019-10-15 14:54:08 · 370 阅读 · 0 评论 -
MYSQL的连接查询
JOIN的含义就如英文单词“join”一样,连接两张表,大致分为内连接,外连接,右连接,左连接,自然连接。首先我们先创建两张表CREATE TABLE t_blog( id INT PRIMARY KEY AUTO_INCREMENT, title VARCHAR(50), typeId INT ); SELECT * FROM ...原创 2019-10-15 13:48:39 · 112 阅读 · 0 评论 -
数据库的事务以及Spring管理事务
事务:如果一个包含多个步骤的业务操作,被事务管理,那么这些操作要么同时成功,要么同时失败。操作:1. 开启事务: start transaction;2. 回滚:rollback;3. 提交:commit;CREATE TABLE account ( id INT PRIMARY KEY AUTO_INCREMENT, NAME VARCHAR(10), balanc...原创 2019-08-05 14:18:07 · 166 阅读 · 0 评论 -
关于redis
Redis概念:redis是一款高性能的NoSQL非关系型数据库。NoSQL数据库的产生就是为了解决大规模数据集合多重数据种类带来的挑战,尤其是大数据应用难题优点:1)成本:nosql数据库简单易部署,基本都是开源软件,不需要像使用oracle那样花费大量成本购买使用,相比关系型数据库价格便宜。2)查询速度:nosql数据库将数据存储于缓存之中,关系型数据库将数据存储在硬盘中,自然查询速度...原创 2019-08-05 12:46:02 · 95 阅读 · 0 评论 -
mysql中InnoDB引起的死锁
关于死锁MyISAM表锁是deadlock free的,这是因为MyISAM总是一次获得所需的全部锁,要么全部满足,要么等待,因此不会出现死锁。但在InnoDB中,除单个SQL组成的事务外,锁是逐步获得的,这就决定了在InnoDB中发生死锁是可能的。如下所示的就是一个发生死锁的例子。在上面的例子中,两个事务都需要获得对方持有的排他锁才能继续完成事务,这种循环锁等待就是典型的死锁。发生死锁后...原创 2019-08-18 15:56:48 · 375 阅读 · 0 评论 -
mysql中对数据的去重
最近面试有家公司问了个mysql的数据去重,自己对于mysql一般多用于增删改查,所以私下来尝试了mysql数据的去重总结DISTINCT在使用MySQL时,有时需要查询出某个字段不重复的记录,这时可以使用mysql提供的distinct这个关键字来过滤重复的记录,但是实际中我们往往用distinct来返回不重复字段的条数(count(distinct id)),其原因是distinct只能返...原创 2019-08-17 15:31:40 · 18035 阅读 · 0 评论 -
mysql中MyISAM锁
mysql中使用比较多的两种引擎是MyISAM和InnoDBMyISAM使用表级锁。InnoDB使用行级锁。表锁:开销小,加锁快;不会出现死锁;锁定力度大,发生锁冲突概率高,并发度最低行锁:开销大,加锁慢;会出现死锁;锁定粒度小,发生锁冲突的概率低,并发度高MyISAM存储引擎只支持表锁,这也是MySQL开始几个版本中唯一支持的锁类型。随着应用对事务完整性和并发性要求的不断提高,MySQ...原创 2019-08-18 10:28:28 · 970 阅读 · 0 评论 -
mysql中InnoDB锁
mysql中使用比较多的两种引擎是MyISAM和InnoDBMyISAM使用表级锁。InnoDB使用行级锁。表锁:开销小,加锁快;不会出现死锁;锁定力度大,发生锁冲突概率高,并发度最低行锁:开销大,加锁慢;会出现死锁;锁定粒度小,发生锁冲突的概率低,并发度高InnoDBInnoDB与MyISAM的最大不同有两点:一是支持事务(TRANSACTION);二是采用了行级锁。数据库实现事务...原创 2019-08-18 15:29:32 · 156 阅读 · 1 评论 -
乐观锁与悲观锁
区别悲观锁:总是假设最坏的情况,认为竞争总是存在,每次拿数据的时候都认为会被修改,因此每次都会先上锁。其他线程阻塞等待释放锁。乐观锁:总是假设最好的情况,认为竞争总是不存在,每次拿数据的时候都认为不会被修改,因此不会先上锁,在最后更新的时候比较数据有无更新,可通过版本号或CAS实现。使用场景悲观锁:用于写比较多的情况,避免了乐观锁不断重试从而降低性能乐观锁:用于读比较多的情况,避免了不必...原创 2019-09-26 17:06:25 · 260 阅读 · 0 评论