分庫分表
1.垂直分表:
按照字段使用多寡,字段類型(text,blob),字段長度將表拆分為多個表。--減輕了熱門數(shù)據(jù)的效率壓力,減少磁盤爭搶。
2.垂直分庫:
按照業(yè)務邏輯,將表拆分到不同的庫,庫被安置在不同的服務器。--業(yè)務耦合減少,業(yè)務邏輯清晰,提高高并發(fā)狀態(tài)下數(shù)據(jù)庫的連接數(shù),硬件資源瓶頸被提升,可按照業(yè)務分級數(shù)據(jù),拓展,監(jiān)控及維護,降低磁盤鎖定,io爭搶。
3.水平分庫:
按照一定規(guī)則將表拆分成不同的表放在不同服務器上的不同數(shù)據(jù)庫。--減少單庫大數(shù)據(jù),提升高并發(fā)性能,增加系統(tǒng)穩(wěn)定性及可用性
4.水平分表:
按照一定規(guī)則將表拆分成不同的表 --減少單表大數(shù)據(jù),提升單表效率
線程
? ? 線程生命周期:線程創(chuàng)建--》進入就緒狀態(tài)--》開始運行--》運行結束/調用sleep方法或其他導致堵塞的方法--》阻塞狀態(tài)--》休眠時間過期進入就緒狀態(tài)
線程池
? ? ? ? 創(chuàng)建線程池:excuter類,通過它的子類excuterThreadPool創(chuàng)建線程池,該類的創(chuàng)建方法中包含參數(shù)(corePoolSize,maxmumpoolsize,keepalivetime,unit,threadfactories,workqueue,handler)分別為核心線程數(shù)量,最大線程數(shù)量,除核心線程外最大生命周期,生命周期計算單位,線程工廠,等待隊列,拒絕策略。
線程池處理流程:
? ? ? ? 首先判斷核心線程是否已滿,未滿則創(chuàng)建線程執(zhí)行,已滿則判斷等待隊列是否已滿,未滿則創(chuàng)建線程加入等待隊列,已滿則判斷最大線程數(shù)量是否已滿,未滿則創(chuàng)建線程執(zhí)行,已滿則進入拒絕策略。
四種拒絕策略:
abortPolicy:拒絕創(chuàng)建線程并拋出異常,返回提示信息拒絕創(chuàng)建線程
discardpolice:拒絕創(chuàng)建線程同時不拋出異常
discardoldsetpolicy:將進程中的第一個線程替換為當前請求線程執(zhí)行
callerrunspolicy:直接調用excute方法運行線程
四種常見線程池:
可緩存線程池,沒有核心線程,但有非核心線程,且數(shù)量為無限大,適用于耗時少任務量大的進程--cachedthreadpool
周期性線程池,有核心線程池,同時也有非核心線程池,數(shù)量也為無限大,適用于周期性進程--schedulethreadpool
單線程線程池,只有一條線程,適用于順序執(zhí)行的情況--singelthreadpool
定長線程池,只有核心線程,--fixedtreadpool