7.10亿数据如何插入Mysql 10亿数据如何插入Mysql 背景 10亿条数据,每条数据1Kb; 数据内容是非结构化的用户访问日志,需要解析后写入到数据库; 数据存放在Hdfs或S3分布式文件存储里 10亿条数据并不是1个大文件,而是被近似切分为100个文件,后缀标记顺序; 要求有序导入,尽量不重复;数据库是MySQL; 数据库单表能支持10亿吗? 不能,单表推荐值是2000W,但是阿里规约建议500W就开始分表 2025-10-26 05数据库 > MySQL
EXPLAIN EXPLAIN ID:执行编号,标识select所属的行。如果在语句中没子查询或关联查询,只有唯一的select,每行都将显示1。否则,内层的select语句一般会顺序编号,对应于其在原始语句中的位置 select_type:显示本行是简单或复杂select。如果查询有任何复杂的子查询,则最外层标记为PRIMARY(DERIVED、UNION、UNION RESUlT) simple 简单子查 2025-10-26 05数据库 > MySQL
1redis基础 Redis基础Redis和Memchched 数据类型:Memcached 仅支持字符串类型,而 Redis 支持五种不同的数据类型,可以更灵活地解决问题。 数据持久化:Redis 支持两种持久化策略:RDB 快照和 AOF 日志,而 Memcached 不支持持久化。 分布式:Memcached 不支持分布式,只能通过在客户端使用一致性哈希来实现分布式存储,这种方式在存储和查询时都需要先在客户端 2025-10-26 05数据库 > redis
2redis进阶 Redis进阶Redis单线程模型 redis 会将每个客户端都关联一个指令队列。客户端的指令通过队列来按顺序处理,先到先服务。 在一个客户端的指令队列中的指令是顺序执行的,但是多个指令队列中的指令是无法保证顺序的,例如执行完 client-0 的队列中的 command-0 后,接下去是执行哪个队列中的第一个指令是无法确定的,但是肯定不会同时执行两个指令。 redis 同样也会为每个客户端关联一 2025-10-26 05数据库 > redis
3redis集群 Redis集群Redis Sentinel哨兵机制简介 Sentinel(哨兵)进程是用于监控redis集群中Master主服务器工作的状态 在Master主服务器发生故障的时候,可以实现Master和Slave服务器的切换,保证系统的高可用(HA) 哨兵进程的作用 监控(Monitoring): 哨兵(sentinel) 会不断地检查你的Master和Slave是否运作正常。 提醒(Notif 2025-10-26 05数据库 > redis
4Redis常见问题 redis热点key的一些问题热点检测 凭借经验,进行预估:例如提前知道了某个活动的开启,那么就将此Key作为热点Key 客户端收集:在操作Redis之前对数据进行统计,记录每个请求,定时把收集到的数据上报,然后由一个统一的服务进行聚合计算。方案简单但是无法适应多语言架构 抓包进行评估:Redis使用TCP协议与客户端进行通信,通信协议采用的是RESP,所以能进行拦截包进行解析 在proxy层,对 2025-10-26 05数据库 > redis
数据库概述 数据库分类 关系型数据库:数据以表的形式存储,表由行和列组成,通过 SQL 语言进行操作,支持 ACID 事务,具有强一致性。适合金融交易、ERP 系统、电商订单管理等需要高可靠性和事务支持的场景,常见的有 MySQL、PostgreSQL、Oracle、SQL Server 等。 非关系型数据库 :用于存储非结构化或半结构化数据,采用更灵活的数据模型,适合大规模数据存储和高性能应用场景。可进一 2025-10-26 05数据库
设计模式 设计模式设计原则单一职责原则 一个类应该只有一个发生变化的原因(业务需求) 开闭原则 软件中的对象,类,模块和函数对扩展应该是开放的,但对于修改是封闭的.这意味着应该用抽象定义结构,用具体实现扩展细节,以此确保软件系统开发和维护过程的可靠性 面向抽象编程 里氏替换原则 如果S是T的子类型,那么所有的T类型对象都可以在不破坏程序的情况下被S类型的对象替换 当子类继承父类时,除添加新的方法且完成新 2025-10-26 06设计模式
Caffeine Caffeine 将对数据的读写看到是日志的提交过程,设由专门的环形缓冲区来记录由于数据读取而产生的状态变动日志。为进一步减少竞争,caffeine对每条线程(对线程取hash,哈希值相同的使用同一个缓冲区)都设置一个专用的环形缓冲 环形缓冲:它是一种拥有读、写两个指针的数据复用结构,在计算机科学中有非常广泛的应用。举个具体例子,譬如一台计算机通过键盘输入,并通过 CPU 读取“HELLO WIK 2025-10-26 11技术栈
Disruptor Disruptor简介 Disruptor是英国外汇交易公司LMAX开发的一个高性能队列,研发的初衷是解决内存队列的延迟问题(在性能测试中发现竟然与I/O操作处于同样的数量级)。基于Disruptor开发的系统单线程能支撑每秒600万订单,2010年在QCon演讲后,获得了业界关注。2011年,企业应用软件专家Martin Fowler专门撰写长文介绍。同年它还获得了Oracle官方的D 2025-10-26 11技术栈