一次分表的技术方案分享
1. 业务场景主要考虑两个因素:纯粹的数据量角度:单表数据量过大已经影响查询性能(查看当前数据量)数据量增长迅速,防患于未然(查看近一月数据量增长情况,对未来做出预期)我们目前存在一个数据表1600w+数据,月增长200w左右。客户实际感知的业务响应速度带来的直观用户体验影响我们线上这个千万级的表查
1. 业务场景主要考虑两个因素:纯粹的数据量角度:单表数据量过大已经影响查询性能(查看当前数据量)数据量增长迅速,防患于未然(查看近一月数据量增长情况,对未来做出预期)我们目前存在一个数据表1600w+数据,月增长200w左右。客户实际感知的业务响应速度带来的直观用户体验影响我们线上这个千万级的表查
1. 语法差异这里总结一下这次迁移过程中遇到的语法差异:PG中,select [column1] || [column2] 用来连接字符串;MySQL中 || 是逻辑运算符,按照PG语法,需要改成字符串连接函数 select concat([column1], [column2])PG支持boole
1. 第一本福克纳接触到福克纳其实是豆瓣有一期纪念福克纳的活动,我点进去后发现有本叫做《喧哗与骚动》的书,我很喜欢这个书名,又因为这是49年诺奖作品,有了读这本书的计划。《喧哗与骚动》是我的第一本福克纳,工作之余大概花了一个月时间才看完,倒不是篇幅很长,而是福克纳的“意识流”的写作法让我一开始表现出
Java线程与协程1. 线程的实现方式1.1. 内核线程实现使用内核线程实现的方式也被称为1:1实现。内核线程(Kernel-Level Thread,KLT)就是直接由操作系统内核(Kernel,下称内核)支持的线程,这种线程由内核来完成线程切换,内核通过操纵调度器(Scheduler)对线程进行
1. 编译器分类前端编译器:.java文件转变为.class文件的过程(比如Javac)后端编译器:即时编译器(JIT编译器,Just In Time Compiler):运行期把字节码转变成本地机器码的过程(比如HotSpot的C1、C2编译器,Graal编译器)提前编译器:把程序编译成与目标机器
1. 运行时栈帧结构Java虚拟机以方法作为最基本的执行单元,“栈帧”(Stack Frame)则是用于支持虚拟机进行方法调用和方法执行背后的数据结构,它也是虚拟机运行时数据区中的虚拟机栈(Virtual Machine Stack)的栈元素。栈帧包括了局部变量表、操作数栈、动态连接、方法返回地址和
1. 类加载的时机一个类型从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期将会经历加载(Loading)、验证(Verification)、准备(Preparation)、解析(Resolution)、初始化(Initialization)、使用(Using)和卸载(Unloading