杂谈-加佐特

1.redolog如果满了会如何处理

关于redolog可以参考下

https://blog.csdn.net/tiancaideshaonian/article/details/119719734

当redolog满了之后:

1、满了之后,会暂停新事物的提交,并引发报错
2、当留出空间后,才能继续执行

通常redolog的大小是4G、高版本后,可以支持到更大。

redolog逻辑上是一块环形的空间,通过checkpoint 和 writepos 记录擦除位置以及当前写入位置。

2.一般环境分层

开发环境

test测试环境

uat(User Acceptance Test) 测试环境

预发环境(准发布环境)

灰度环境

生产环境

3.可以使用多少列创建索引

mysql5.7 官方文档:

https://dev.mysql.com/doc/refman/5.7/en/innodb-limits.html

3.1 InnoDB可以单表最多有多少列?

在这里插入图片描述

可以看出在InnoDB中最多允许1017列。我们注意到后面Virtual generated columns are included in this limit. 虚拟列也是在这个限制中的。

什么是虚拟列:

针对函数索引,Mysql5.7提出 虚拟列用于实现函数索引类似的功能

虚拟列不存储在数据行中,但虚拟列的元数据信息会存在于相关系统表中,对虚拟列的添加或者删除只会涉及这些系统表,不会导致数据表的重建,所以效率很高。注意不能建立虚拟列和真实列的联合索引

参考连接:https://www.techug.com/post/mysql-5-7-generated-virtual-columns.html

3.2 索引建多了,会有什么问题

1、索引从底层讲也是需要占用物理空间的。索引多了,自然占用空间就多。

2、索引内部有序,插入数据时,如果需要调整顺序,此时就会导致索引树自身的调整。此调整过程也会消耗性能。

3.3 多列索引最多允许多少列

在这里插入图片描述

一般规定不允许超过5列

3.4 mysql行数据大小限制

在这里插入图片描述

最大允许为65535

3.4.1 65535 对于text 和 blob字段是不受其影响的

blob字段和 text字段只会在行字段大小中贡献9到12个字节,他们的数据时存在其他地方,通过指针寻址。

text 和 blob不能作为索引字段。

TEXT与BLOB的主要差别:BLOB保存二进制数据,TEXT保存字符数据。

拓展:全文索引

5.6之前 只有MyISAM存储引擎支持,5.6之后innodb支持

create fulltext index index_name on tablename(colname)

select * from user where match(name) against(‘ABLE’);

show variables like ‘%ft%’
在这里插入图片描述

  • 必须在字符串、文本字段上建立
  • 只有3-84个字符才会建立全文索引
  • 默认为等值,例如a 匹配 aa,如果想要匹配可以在布尔模式下搜索a*
  • 全文索引字段值要进行且此处理,按syntax字符进行切割

4.热点数据

4.1 限制Redis最大占用内存,通过allkeys-lru算法进行淘汰

less recently used (LRU) keys

拓展:关于LRU算法在Mysql中其实也有使用

在bufferPool 中使用了改进的LRU算法用于page的内存释放

改进型LRU算法

  • 普通LRU:末尾淘汰发,新数据从链表头部加入,释放空间从末尾淘汰
  • 改进LRU: 链表分为new 和 old两个部分,加入元素时,从midpoint位置插入,如果数据很快被访问了,那么page就会向new 列表头部移动,如果没有被访问,会逐步向old尾部移动,等待淘汰
  • 每当有新的page数据读取到buffer pool时,Innodb会判断是否有空闲页,是否足够,如果有就将free page 从free list李彪删除,放入到LRU列表中,没有空闲页,就会根据LRU算法淘汰你人的页,并将被内存空间释放分配给新的页

4.2 对于单条记录命中缓存后添加过期时间

这个有最大的弱点就是,如果某一时间端命中过高后,会导致过期时间过大而无法显示真实情况

其实这里可以考虑借助缓存创建时间,最近命中次数等进行权重分析,进而影响过期时间。类似于热搜的算法。

5. 分布式锁

redis:

1、自己定义,使用redis的setNx()加锁,解锁使用lua脚本;
2、使用现成集成框架,redisson

ZK:

通过临时节点

优缺点:

redis 比较常用,效率高,并且已经实现了锁的可重入。实现比较简单

zk的话 可能需要自己去实现,同时考虑锁的可重入

6. 如何设计实现 TPS 和 QPS

1.redis记录服务调用

2.拉取服务日志,进行数据分析

3.Niginx请求日志统计

4.redis HyperLogLog

6.1 redis HyperLogLog

HyperLogLog 提供不精确的去重计数方案,虽然不精确但是也不是非常不精确,标准误差是 0.81%

参考连接:https://www.cnblogs.com/54chensongxia/p/13803465.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值