获得徽章 1
#青训营笔记创作活动#
2月14日 打卡day30
通过阅读这篇文章知道了:
0、分库分表是在海量数据下,由于单库、表数据量过大,导致数据库性能持续下降的问题,演变出的技术方案。分库分表是由分库和分表这两个独立概念组成的,只不过通常分库与分表的操作会同时进行,以至于我们习惯性的将它们合在一起叫做分库分表。
1、如何分库分表
1.1、垂直拆分
- 垂直分库
- 垂直分表
1.2、水平拆分
- 水平分库
- 水平分表
2、数据存在哪个库的表
2.1、取模算法
2.2、范围限定算法
2.3、范围 + 取模算法
2.4、地理位置分片
2.5、预定义算法
3、分库分表架构模式
3.1、客户模式
3.2、代理模式
展开
评论
#青训营笔记创作活动#
2月13日 打卡day29
阅读这篇文章知道:
1、缓存的定义:为了系统性能的提升,我们一般都会将部分数据放入缓存中,加速访问。而DB只承担数据落盘工作 先更新缓存,再更新数据库
2.1、缓存穿透:指用户在不断访问一个缓存和数据库中都没有的数据
2.2、缓存雪崩:Redis挂掉了,请求全部走数据库
2.3、缓存击穿:Redis 中大某一个热点key在突然失效,并且此时正处于高并发期间,导致流量全部打到数据库上,造成数据库极大的压力
3、缓存与数据库的一致性问题:
- 先更新缓存,再更新数据库
- 先更新数据库,再更新缓存
- 先删除缓存,再更新数据库
- 先更新数据库,再删除缓存
展开
评论
#青训营笔记创作活动#
2月12日 打卡day28
阅读这篇文章了解了缓存该如何使用:
1、开发人员对缓存进行了整改可以将本地缓存改为了Redis集中式缓存。
- 缓存不一致问题解决:解决了各个节点间数据不一致的问题;
- 单机内存容量限制解决:使用了Redis这种分布式的集中式缓存,扩大了内存缓存的容量范围,可以顺便将很多业务层面的数据全部加载到Redis中分片进行缓存,性能也相比而言得到了提升。
2、根据使用场景的不同,在结合缓存进行业务逻辑实现的时候,也会存在不同的架构模式,典型的会有旁路型缓存、穿透型缓存与异步型缓存三种。
3、缓存与数据库的数据一致性问题
- 先更新缓存,再更新数据库
- 先更新数据库,再更新缓存
- 先删除缓存,再更新数据库
- 先更新数据库,再删除缓存
展开
评论
#青训营笔记创作活动#
2月11日 打卡day27
阅读这篇文章知道了高并发下秒杀商品当中的一些细节:
1.瞬时高并发
-页面静态化
- CDN加速
- 缓存
- mq异步处理
- 限流
- 分布式锁
2.页面静态化
3.秒杀按钮
4.读多写少
5.缓存问题
- 缓存击穿
- 缓存穿透
6.库存问题
7.分布式锁
- setNx 加锁
- set加锁
-释放锁
- 自旋锁
- redisson
8.mq异步处理
- 消息丢失问题
- 重复消费问题
- 垃圾消息问题
- 延迟消费问题
9.如何限流?
- 对同一用户限流
- 对同一ip限流
- 对接口限流
- 加验证码
- 提高业务门槛
展开
评论
#青训营笔记创作活动#
2月10日 打卡day26
阅读该篇文章知道了:
1.大数取模运算是不可逆的,因此他人无法暴力解密。但是结合欧拉定理,我们可以选取出合适的p(公钥), q(私钥), N(用于取模的大数),让原本不可逆的运算在特定情况下,变得有那么点“可逆”的味道。数学原理决定了我们用公钥加密的数据,只有私钥能解密。反过来,用私钥加密的数据,也只有公钥能解密。
2.HTTPS相当于HTTP+TLS,目前主流的是TLS1.2,基于TCP三次握手之后,再来TLS四次握手。
3.TLS四次握手的过程中涉及到两对私钥和公钥。分别是服务器本身的私钥和公钥,以及CA的私钥和公钥。
展开
评论
#青训营笔记创作活动#
2月9日 打卡day25
通过阅读这篇文章知道了以下一些问题:
1. 什么是Redis
2. Redis的优缺点
3. Memcache和Redis的区别
4. Redis支持的数据类型
5. Redis中String类型的实现原理
6. Redis为何直接以内存存储
7. Redis如何进行内存优化
8. Redis如何实现分布式锁
9. Redis高性能的原因
10. Redis持久化的方式
11. Redis过期删除策略
12. Redis的同步机制
13. Redis的内存淘汰策略
14. Redis常见的问题
15. Redis如何进行缓存降级
16. Redis如何进行缓存更新
17. Redis如何缓存热点Key
18. Redis的哨兵模式
19. Redis的Pipeline管道
20. Redis如何进行性能优化
21. Redis的数据一致性问题
22. Redis如何实现事务
23. Redis如何实现集群
24. Redis的脑裂问题
25. Redis如何实现异步队列
26. Redis如何实现延迟队列
27. Redis中哈希槽的概念
28. Redis的应用场景
29. Redis实现签到表功能
30. Redis中Zset的底层实现
展开
评论
#青训营笔记创作活动#
2月8日 打卡day24
阅读这篇文章知道如何正确去使用索引:
①查询SQL中尽量不要使用OR关键字,可以使用多SQL或子查询代替。
②模糊查询尽量不要以%开头,如果实在要实现这个功能可以建立全文索引。
③编写SQL时一定要注意字段的数据类型,否则MySQL的隐式转换会导致索引失效。
④一定不要在编写SQL时让索引字段执行计算工作,尽量将计算工作放在客户端中完成。
⑤对于索引字段尽量不要使用计算类函数,一定要使用时请记得将函数计算放在=后面。
⑥多条件的查询SQL一定要使用联合索引中的第一个字段,否则会打破最左匹配原则。
⑦对于需要对比多个字段的查询业务时,可以拆分为连表查询,使用临时表代替。
⑧在SQL中不要使用反范围性的查询条件,大部分反范围性、不等性查询都会让索引失效。
展开
评论
#青训营笔记创作活动#
2月7日 打卡day23
阅读这篇文章知道了:
1、索引就是用来帮助表快速检索目标数据的
2、单列索引有很多类型:
- 唯一索引:指索引中的索引节点值不允许重复,一般配合唯一约束使用。
- 主键索引:主键索引是一种特殊的唯一索引,和普通唯一索引的区别在于不允许有空值。
- 普通索引:通过KEY、INDEX关键字创建的索引就是这个类型,没什么限制,可以让查询快一点
3、聚簇索引:逻辑上连续且物理空间上的连续
4、非聚簇索引:逻辑上的连续,物理空间上不连续
5、创建索引需注意:
- 创建主键索引时,必须要将索引字段先设为主键,否则会抛1068错误码。
- 这里也不能使用CREATE语句创建索引,否则会提示1064语法错误。
- 同时创建索引时,关键字要换成KEY,并非INDEX,否则也会提示语法错误
展开
评论
#青训营笔记创作活动#
2月6日 打卡day22
阅读这篇文章了解了一个可视化的数据库平台,可以在线去管理数据库,即Bytebase。他使我们在没有客户端的情况下也能方便地进行数据库管理,它的SQL审核功能可以避免开发人员对数据库的误操作。
展开
评论
#青训营笔记创作活动#
2月5日 打卡day21
阅读这篇文章知道一些SQL的优化思路:
1、优化order by的文件排序:
- 因为数据是无序的,所以就需要排序。如果数据本身是有序的,那就不会再用到文件排序。而索引数据本身是有序的,我们通过建立索引来优化order by语句。
- 也可以通过max_length_for_sort_data、sort_buffer_size等参数优化;
2、group by优化思路:
- group by 后面的字段加索引
- order by null 不用排序
- 尽量只使用内存临时表
- 使用SQL_BIG_RESULT
3、索引字段上使用(!= 或者 < >),索引可能失效
4、索引字段上使用is null, is not null,索引可能失效
5、临时表的排序
- 如果是全字段排序,需要查询返回的字段,都放入sort buffer,根据排序字段排完,直接返回
- 如果是rowid排序,只是需要排序的字段放入sort buffer,然后多一次回表操作,再返回
展开
评论
#青训营笔记创作活动#
2月4日 打卡day20
通过阅读这篇文章知道一条SQL语句的经历:
1、SQL语句都诞生于客户端,主要有两种方式产生一条SQL,一种是由开发者自己手动编写,另一种则是相关的ORM框架自动生成;
2、为了SQL可以正常执行,首先会获取数据库的连接对象;
3、经过连接层的一系列工作后,接着客户端会将要执行的SQL语句通过连接发送过来,然后会进行MySQL服务层进行处理,不过根据用户的操作不同,所执行的SQL语句也会存在差异;
4、一条「读SQL」或「写SQL」执行完成后,由于SQL操作的属性不同,两者之间也会存在差异性。
展开
评论
下一页
个人成就
文章被点赞 1
文章被阅读 2,136
掘力值 183
收藏集
0
关注标签
0
加入于