数据库
热爱健体的程序猿
这个作者很懒,什么都没留下…
展开
-
聚集索引与非聚集索引
前言索引大家都应该学过,索引又分为聚集索引和非聚集索引,它们的结构都是B+树。B+树中,数据并不储存在根节点上,而是储存在叶子节点上。聚集索引和非聚集索引在叶子节点上有一些区别,后文会讲到。聚集索引聚集索引是指数据库表行中数据的物理顺序与键值的逻辑(索引)顺序相同。一个表只能有一个聚集索引,因为一个表的物理顺序只有一种情况,所以,对应的聚集索引只能有一个。我们可以把聚集索引看出是字典的拼音目...原创 2019-07-02 16:42:09 · 167 阅读 · 0 评论 -
Redis持久化的两种方式
前言Redis是一种K-V数据库,它的数据也可以进行持久化操作。因为redis的数据都保存在内存中,如果不进行及时的持久化,可能就会因为重启导致数据的丢失。这时候就需要对redis进行持久化操作,将数据保存在磁盘上。redis提供了两种持久化方式,分别是AOF和RDB。下面分别对这里持久化方式进行解析。1.RDBRDB是将redis 的数据生成快照保存在磁盘上。 工作流程如下:执行bg...原创 2019-07-11 15:36:00 · 482 阅读 · 0 评论 -
redis复习精讲
复习要点?本文围绕以下几点进行阐述1、为什么使用redis2、使用redis有什么缺点3、单线程的redis为什么这么快4、redis的数据类型,以及每种数据类型的使用场景5、redis的过期策略以及内存淘汰机制6、redis和数据库双写一致性问题7、如何应对缓存穿透和缓存雪崩问题8、如何解决redis的并发竞争问题正文1、为什么使用redis分析:博主觉得在项目中...转载 2019-07-05 10:55:57 · 154 阅读 · 0 评论 -
数据库分库分表的应用场景及解决方案
数据库分库分表的应用场景及解决方案现实业务场景中,为了保障客户体验并满足业务的线性增长。会对数据量巨大,且业务会始终进行的产品进行分表分库策略。但是如何合理的根据业务采取争取的分表分库策略至关重要。下面以具体实例来进行分析。• 场景一:用户中心,单key业务如何进行数据库切分• 场景二:订单中心,多key业务如何进行数据库切分场景一:用户中心数据库切分架构实践|场景...转载 2019-07-04 15:50:15 · 302 阅读 · 0 评论 -
数据库分库分表思路
1. 数据切分关系型数据库当容量超过1000w或100G以后,单机储存容量、查询速度、处理能力都会达到瓶颈。这时候即使对sql语句进行优化也无济于事。这时候就需要对数据库进行切分,这里有分为水平切分和垂直切分。(1)垂直切分垂直切分有垂直分库和垂直分表两种。垂直分库就是将关联度低的不同表储存在不同的数据库中。这和微服务的思想类似,将一个大的系统拆分成小系统,按业务进行切分。如图:垂直分...原创 2019-07-04 15:20:00 · 589 阅读 · 0 评论 -
聚集索引,非聚集索引,覆盖索引的查询原理
转自 https://blog.csdn.net/itguangit/article/details/82145322使用索引很简单,只要能写创建表的语句,就肯定能写创建索引的语句,要知道这个世界上是不存在不会创建表的服务器端程序员的。然而, 会使用索引是一回事, 而深入理解索引原理又能恰到好处使用索引又是另一回事,这完全是两个天差地别的境界(我自己也还没有达到这层境界)。很大一部份程序员对索引...转载 2019-07-03 16:33:03 · 1969 阅读 · 2 评论 -
SQL优化
使用索引的优化索引一般可以加速数据的检索速度,加速表与表之间的链接,提高性能,所以在对海量数据进行处理时,考虑到信息量比较大,应该对表建立索引,包括在主键上建立聚簇索引,将聚合索引建立在日期上等。索引的优点有很多,但是对于索引的建立,还需要考虑实际情况,而不是对每一个列建立一个索引,比如针对大表的分组、排序等字段,都要建立相应索引,同时还应该考虑建立符合索引。增加索引的同时也有很多不好的方面,首...原创 2019-07-03 16:04:46 · 124 阅读 · 0 评论 -
Mysql explain详解
前言explain关键字在MySQL中可以查看一条查询语句的具体执行策略。通过explain关键字,我们可以查看到哪些字段使用了索引,发生了哪些查询,查询是什么类型的等等。explain关键字分别有以下10列:id:选择标识符select_type:表示查询的类型。table:输出结果集的表partitions:匹配的分区type:表示表的连接类型possible_keys:表示查...原创 2019-07-09 22:53:14 · 235 阅读 · 0 评论 -
4种事务隔离级别
首先来看一下不同事务隔离级别可能造成的问题:1. 脏读脏读是指当一个事务正在访问数据,并且对数据进行了修改,而这种修改还没有提交到数据库中,这时,另外一个事务也访问这个数据,然后使用了这个数据。来看个例子:#首先,修改隔离级别set tx_isolation='READ-UNCOMMITTED';#事务A:启动一个事务start transaction;select * from...原创 2019-07-19 16:27:02 · 251 阅读 · 0 评论