05-11学习总结

分库分表

1.垂直分表:

按照字段使用多寡,字段类型(text,blob),字段长度将表拆分为多个表。--减轻了热门数据的效率压力,减少磁盘争抢。

2.垂直分库:

按照业务逻辑,将表拆分到不同的库,库被安置在不同的服务器。--业务耦合减少,业务逻辑清晰,提高高并发状态下数据库的连接数,硬件资源瓶颈被提升,可按照业务分级数据,拓展,监控及维护,降低磁盘锁定,io争抢。

3.水平分库:

按照一定规则将表拆分成不同的表放在不同服务器上的不同数据库。--减少单库大数据,提升高并发性能,增加系统稳定性及可用性

4.水平分表:

按照一定规则将表拆分成不同的表 --减少单表大数据,提升单表效率


线程

    线程生命周期:线程创建--》进入就绪状态--》开始运行--》运行结束/调用sleep方法或其他导致堵塞的方法--》阻塞状态--》休眠时间过期进入就绪状态

线程池

        创建线程池:excuter类,通过它的子类excuterThreadPool创建线程池,该类的创建方法中包含参数(corePoolSize,maxmumpoolsize,keepalivetime,unit,threadfactories,workqueue,handler)分别为核心线程数量,最大线程数量,除核心线程外最大生命周期,生命周期计算单位,线程工厂,等待队列,拒绝策略。

线程池处理流程:

        首先判断核心线程是否已满,未满则创建线程执行,已满则判断等待队列是否已满,未满则创建线程加入等待队列,已满则判断最大线程数量是否已满,未满则创建线程执行,已满则进入拒绝策略。

四种拒绝策略:

abortPolicy:拒绝创建线程并抛出异常,返回提示信息拒绝创建线程

discardpolice:拒绝创建线程同时不抛出异常

discardoldsetpolicy:将进程中的第一个线程替换为当前请求线程执行

callerrunspolicy:直接调用excute方法运行线程

四种常见线程池:

可缓存线程池,没有核心线程,但有非核心线程,且数量为无限大,适用于耗时少任务量大的进程--cachedthreadpool

周期性线程池,有核心线程池,同时也有非核心线程池,数量也为无限大,适用于周期性进程--schedulethreadpool

单线程线程池,只有一条线程,适用于顺序执行的情况--singelthreadpool

定长线程池,只有核心线程,--fixedtreadpool

你可能感兴趣的:(05-11学习总结)