数据库
善思
哈尔滨工程大学计算机科学与技术专业学术硕士,研究方向为CV,曾在世界500强公司ABB(中国)有限公司实习半年算法工程师,在中间空间技术研究院(503)实习一年,做java后端开发实习生。
展开
-
一条sql执行很慢,可能是因为什么? 怎么优化?
下面是网络中流传最广的一篇sql查询速度慢的原因及解决方法的文章,其对于处理mysql的慢查询有借鉴作用。由于此文转载多次,很难找到最开始的原文链接,就附送本人最先看到此文的链接:http://www.cnblogs.com/zhangwc/p/6431865.htmlsql查询速度慢的原因1、没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的缺陷)2、I/O吞吐量小,形成了瓶颈效应。3、没有创建计算列导致查询不优化。4、内存不足5、网络速度慢6、查询出的数据量过大(可以采用多原创 2020-05-14 17:10:03 · 30060 阅读 · 12 评论 -
流量削峰
如果你看过秒杀系统的流量监控图的话,你会发现它是一条直线,就在秒杀开始的那一秒是一条很直很直的直线,这时因为秒杀请求在时间上高度集中于某一个特定的时间点。这样一来,就会导致一个特别高的流量峰值,它对资源的消耗是瞬时的。对于秒杀这个场景来说,最终能够抢购到商品的人数是固定的。也就是说,100个人和1000000个人发起请求的结果都是一样的,最后都只会有100个人买到秒杀的商品。这就意味着,...原创 2020-04-25 21:47:12 · 438 阅读 · 0 评论 -
分库分表知识点
分库分表知识点背景在并发量起来,并且数量激增之后,数据库将会遇到瓶颈,最终会导致数据库的活跃连接数增加,进而逼近甚至达到数据库可以承载活跃连接数的阈值。在业务层面来说,可用数据库连接少甚至无连接可用。IO瓶颈第一种:磁盘读IO瓶颈,热点数据太多,数据库缓存放不下,每次查询时会产生大量的IO,降低查询速度->分库和垂直分表。第二种:网络IO瓶颈,请求的数据太多,网络带宽不够...原创 2020-04-19 17:06:02 · 257 阅读 · 0 评论 -
缓存雪崩、缓存穿透、缓存预热、缓存更新、缓存降级等问题!
一、缓存雪崩缓存雪崩我们可以简单的理解为:由于原有缓存失效,新缓存未到期间(例如:我们设置缓存时采用了相同的过期时间,在同一时刻出现大面积的缓存过期),所有原本应该访问缓存的请求都去查询数据库了,而对数据库CPU和内存造成巨大压力,严重的会造成数据库宕机。从而形成一系列连锁反应,造成整个系统崩溃。缓存正常从Redis中获取,示意图如下:缓存失效瞬间示意图如下:缓存失效时的雪...原创 2020-04-08 15:55:07 · 381 阅读 · 1 评论 -
为什么 Redis 选择单线程模型 · Why's THE Design?
Redis 作为广为人知的内存数据库,在玩具项目和复杂的工业级别项目中都看到它的身影,然而 Redis 却是使用单线程模型进行设计的,这与很多人固有的观念有所冲突,为什么单线程的程序能够抗住每秒几百万的请求量呢?这也是我们今天要讨论的问题之一。除此之外,Redis 4.0 之后的版本却抛弃了单线程模型这一设计,原本使用单线程运行的 Redis 也开始选择性使用多线程模型,这一看似有些矛盾的设计...转载 2020-04-08 13:20:50 · 131 阅读 · 0 评论 -
MySQL存储引擎MyISAM与InnoDB区别总结整理
MySQL存储引擎MyISAM与InnoDB区别总结整理原创徐刘根Java后端技术2017-04-031、MySQL默认存储引擎的变迁在MySQL 5.1之前的版本中,默认的搜索引擎是MyISAM,从MySQL 5.5之后的版本中,默认的搜索引擎变更为InnoDB。2、MyISAM与InnoDB存储引擎的主要特点MyISAM存储引擎的特点是:表级锁、不支持事务和全文索引...原创 2020-04-07 18:49:34 · 1174 阅读 · 1 评论 -
幻读和不可重复读的区别
MySQlMySql默认的隔离级别为Repeatable Read,因此只会出现幻读的情况。幻读事务在插入已经检查过不存在的记录时,惊奇的发现这些数据已经存在了,之前的检测获取到的数据如同鬼影一般。例子:在事务1中,查询User表id为1的是用户否存在,如果不存在则插入一条id为1的数据。select*fromUserwhereid=1;...原创 2020-04-03 17:50:32 · 896 阅读 · 2 评论 -
MySQL 索引
索引是在存储引擎层实现的,而不是在服务器层实现的,所以不同存储引擎具有不同的索引类型和实现。1. B+Tree 索引是大多数 MySQL 存储引擎的默认索引类型。因为不再需要进行全表扫描,只需要对树进行搜索即可,所以查找速度快很多。因为 B+ Tree 的有序性,所以除了用于查找,还可以用于排序和分组。可以指定多个列作为索引列,多个索引列共同组成键。适用于全键值、键值...原创 2020-04-03 17:01:36 · 267 阅读 · 1 评论