一次内存优化Double-》double(二)interner weak & db方案实现
intern(四)怎么样防止内存泄漏
===============DB方案实现==========================================================================================================

背景;
1 oracle 不让用,只能在k8s建了一个mysql pod
2 pod不分配公网端口-侵入了微服务入口instance的client hello
后来未使用sharding sphere的原因:
1 分表业务相对局部
2 引包困难
3 侵入了ssl jdbc,也因为ssl,所以性能损伤
com.mysql.cj.protocol.a.NativeSocketConnection
com.mysql.cj.protocol.StandardSocketFactory#performTlsHandshake
com.mysql.cj.protocol.ExportControlled#getSSLContext


key:
1 连接管理:因为使用了ssl 代理,mysql可能cut与代理服务器的tcp连接,在与mysql服务器的inactive里处理与前端的连接close
2 使用myisam
1000批量分表并发(注意批量格式)values()插入(https://www.cnblogs.com/silyvin/p/9106598.html);
不需要事务,允许有些记录插不进重试人工介入,但该失败记录记录在另有张audit表里;一个批次异常后使用二分查找异常行
myisam单线程插入性能式innodb 2倍,实测单线程qps500-1000row,200w单表30-60分钟
myisam数据没有存在页,不用考虑单行4.5KB大小与页16KB的关系
3 分片在内存里使用list o(n)分好
分片数量不仅考虑查询性能,同时考虑并发写入性能,4核8线程机器,io密集型线程数取12;分片数应大于12才能充分发挥多线程优势
流量大约1000*4.5KB=4MB,12个线程大约50MB,如果库IO性能承压可分库
4 分表不需要考虑历史数据重分片,所有取模的数字可以不用2的次方
浙公网安备 33010602011771号