
数据库进阶
MySQL,Redis等技术的总结探讨
lxg2015
这个作者很懒,什么都没留下…
展开
-
分布式锁的Redis实现
分布式锁的Redis实现 分布式锁,是用来控制分布式系统中互斥访问共享资源的一种手段,从而避免并行导致的结果不可控。基本的实现原理和单进程锁是一致的,通过一个共享标识来确定唯一性,对共享标识进行修改时能够保证原子性和和对锁服务调用方的可见性。今天给大家分享一下最常见的一种实现:分布式锁的Redis实现。 实现 最常用的一种实现方式是借助setNX方法,该方法的含义是“set...原创 2018-08-26 15:05:24 · 207 阅读 · 0 评论 -
如何处理缓存失效、缓存穿透、缓存并发等问题
缓存失效: 引起这个原因的主要因素是高并发下,我们一般设定一个缓存的过期时间时,可能有一些会设置5分钟啊,10分钟这些;并发很高时可能会出在某一个时间同时生成了很多的缓存,并且过期时间在同一时刻,这个时候就可能引发——当过期时间到后,这些缓存同时失效,请求全部转发到DB,DB可能会压力过重。 处理方法: 一个简单方案就是将缓存失效时间分散开,不要所以缓存时间长度都转载 2018-01-09 13:11:43 · 388 阅读 · 0 评论 -
redis持久化RDB和AOF
Redis 持久化: 提供了多种不同级别的持久化方式:一种是RDB,另一种是AOF. RDB 持久化可以在指定的时间间隔内生成数据集的时间点快照(point-in-time snapshot)。 AOF 持久化记录服务器执行的所有写操作命令,并在服务器启动时,通过重新执行这些命令来还原数据集。 AOF 文件中的命令全部以 Redis 协议的格式来保存,新命令会被追加到文件的末尾。 Redis转载 2017-05-26 23:35:16 · 247 阅读 · 0 评论 -
sql优化
1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。 2.应尽量避免在 where 子句中使用!=或 3.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如: select id from t where num is null 可以在num上设置默认值0,确保表中转载 2018-01-22 19:48:12 · 213 阅读 · 0 评论 -
利用EXPLAIN分析sql语句的性能
explain显示了MySQL如何使用索引来处理select语句以及连接表。可以帮助选择更好的索引和写出更优化的查询语句。 先解析一条sql语句,看出现什么内容 EXPLAINSELECTs.uid,s.username,s.name,f.email,f.mobile,f.phone,f.postalcode,f.address FROM uchome_space ASs,uchom转载 2018-01-22 20:50:50 · 4692 阅读 · 0 评论 -
一文读懂Mysql索引
Mysql索引总结 定义 索引是存储引擎用于快速定位数据的一种数据结构。 聚集索引 聚集索引是指数据库表行中数据的物理顺序与键值的逻辑(索引)顺序相同。一个表只能有一个聚集索引,因为一个表的物理顺序只有一种情况,所以,对应的聚集索引只能有一个。如果某索引不是聚集索引,则表中的行物理顺序与索引顺序不匹配,与非聚集索引相同,聚集索引有着更快的检索速度。 主键可以作为聚集索引...原创 2018-07-01 15:29:58 · 505 阅读 · 0 评论 -
乐观锁和悲观锁
乐观锁 对于取数据很“乐观“,每次去取数据的时候总认为不会有其他线程对数据进行修改,不会上锁。但是在更新时会判断其他线程在这之前有没有对数据进行修改,一般会使用version版本号机制或CAS操作实现。 version版本号机制 可以为行数据增加version字段,每次修改,版本号自增;取数据的时候也带着版本号。 update XXX set x = x + 1, version = ...原创 2018-08-26 20:31:37 · 245 阅读 · 0 评论