开发过程问题总结

问题:redolog满了,会如何处理?

1、满了之后,会暂停新事物的提交,并引发报错

2、当留出空间后,才能继续执行

补充:

  1. 通常redo log 的大小是4GB以上
  2. redo 是有大小限制的,不是磁盘的容量,环形结构的一块空间
  3. redo log 在高版本后,可支持到更大,可通过修改参数,进行设定,几百G的空间也可以的。
  4. redo log 不会自动分割binlog 会分割

项目进行过程的测试环境:

1、dev 开发环境:

开发、联调、单测、测试接口

2、test 测试环境:

提测、验证、联调、测试接口

3、uat uat环境:

业务验证、测试接口

4、stage 预发环境:

预上线、压测、联调、环境隔离、测试接口

5、prod 生产环境:

上线、AB灰度验证、测试接口、网络验证

可以使用多少列创建索引?

nnoDB: 最多创建1017列, 最多64个二级索引, 单个索引最多包含16列, 索引最大长度767字节(其实行格式为REDUNDANT,COMPACT最高为767字节,但行格式为DYNAMIC,COMPRESSED最高可达为3072字节), 行大小最大65536字节

 1023 - 3*2 = 1017

涉及两个知识点:事务隔离级别、事务的提交顺序

大致是通过这些预留字段作为虚拟列,建虚拟表,通过指针的顺序控制事务顺序,通过空间进行行记录

根据事务隔离不同,不一定这些字段全部都用到,看情况会发生改变。理解起来也比较复杂,

索引数据存储在磁盘,对数据的增删改需要维护索引数据,增加了IO时间消耗

索引内部是有序的,有数据操作的话,索引树需要进行调整。

增删改会创建、维护索引树,如果索引比较多,数据量比较大的话,这个时间就会比较久,另外,索引也需要占用空间的,更多的索引会占用更多的磁盘空间

blob、text 这类字段,会保存到其他地方,并且通过指针,指向数据库表字段,这样就不受65535的限制了

补充:索引与优化

1、选择索引的数据类型

MySQL支持很多数据类型,选择合适的数据类型存储数据对性能有很大的影响。通常来说,可以遵循以下一些指导原则:

(1)越小的数据类型通常更好:越小的数据类型通常在磁盘、内存和CPU缓存中都需要更少的空间,处理起来更快。

(2)简单的数据类型更好:整型数据比起字符,处理开销更小,因为字符串的比较更复杂。在MySQL中,应该用内置的日期和时间数据类型,而不是用字符串来存储时间;以及用整型数据类型存储IP地址。

(3)尽量避免NULL:应该指定列为NOT NULL,除非你想存储NULL。在MySQL中,含有空值的列很难进行查询优化,因为它们使得索引、索引的统计信息以及比较运算更加复杂。你应该用0、一个特殊的值或者一个空串代替空值。

问题:mysql里有2000W数据,redis只存20WW的数据,如何保证redis中的数据都是热点数据?

两个常用思路:

  1. 固定空间大小;

2. 设定延长时间;

可以设置过期时间短一点,每次命中加过期时间,相当于加权

优点:,没有第一种方式那么极端,直接限制内存容量。

缺点:可能某个时间点 是热点数据,然后过期时间设很长,但是接下来一段时间它不再是热点,但是因为基数大还留在里面

如果过期时间,设置成1天,有的商品已累加到30天,有的商品已累加到15天,有的商品累加到45天。那下个月,这三个商品,由于redis的过期时间到了,记录就会销毁,统计上个月的热销产品,只能统计到45天的那个。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值