1. 概述 這一章主要講到了行鎖踱卵,從兩階段鎖說起廊驼,提到了死鎖和死鎖檢測,以及怎么解決熱點(diǎn)行更新導(dǎo)致的性能問題惋砂。 2. 總結(jié) 2.1 行鎖 行鎖就是針對數(shù)據(jù)表中行記錄的鎖妒挎。這很...

1. 概述 這一章主要講到了行鎖踱卵,從兩階段鎖說起廊驼,提到了死鎖和死鎖檢測,以及怎么解決熱點(diǎn)行更新導(dǎo)致的性能問題惋砂。 2. 總結(jié) 2.1 行鎖 行鎖就是針對數(shù)據(jù)表中行記錄的鎖妒挎。這很...
1. 概述 這一章主要講到了全局鎖和表鎖,介紹了碰到鎖時(shí)的現(xiàn)象和其背后的原理西饵。 2. 總結(jié) 2.1 MySQL 里面的鎖大致可以分成全局鎖酝掩、表級鎖和行鎖三類 2.2 全局鎖 ...
1. 概述 這一章是上一章索引的延續(xù),主要講到了覆蓋索引眷柔、聯(lián)合索引期虾、最左前綴、索引下推等概念驯嘱,為了讓我們在復(fù)雜業(yè)務(wù)場景下镶苞,更合理的使用索引。 2. 總結(jié) 2.1 覆蓋索引 覆...
1. 概述 這一章主要講到了幾種索引的常見模型鞠评,InnoDB的索引模型茂蚓,主鍵索引和非主鍵索引,頁分裂和頁合并谢澈。以及使用自增主鍵和使用業(yè)務(wù)邏輯字段做主鍵的應(yīng)用場景煌贴。 2. 總結(jié)...
1. 概述 這一章主要講到了事務(wù)的隔離性與隔離級別,事務(wù)隔離的實(shí)現(xiàn)锥忿,提到了undo log牛郑,數(shù)據(jù)庫多版本控制(MVCC),事務(wù)的啟動(dòng)方式敬鬓,以及避免使用長事務(wù)淹朋。 2. 總結(jié) 2...
1. 概述 這一章主要是通過一條SQL更新語句是如何執(zhí)行的作為引子,來講述 MySQL 兩個(gè)非常重要的日志模塊钉答,redo log(重做日志)和 binlog(歸檔日志)础芍。 2...
1. 簡單聊聊 我是一名后端工程師,MySQL 是我工作中不可或缺的一部分数尿÷匦裕可能很多人認(rèn)為工作重點(diǎn)應(yīng)該放在編程語言上,MySQL 只要能寫出滿足業(yè)務(wù)功能所需的 SQL 即可右蹦,...
1. 概述 CyclicBarrier 可以翻譯為循環(huán)柵欄诊杆,它會(huì)阻塞一組線程直到這些線程同時(shí)達(dá)到某個(gè)條件才繼續(xù)執(zhí)行歼捐。它與 CountDownLatch 很相似,但又不同晨汹。Co...
1. 概述 CountDownLatch 可以翻譯為倒計(jì)時(shí)器豹储,它是一個(gè)線程或多個(gè)線程等待其它線程執(zhí)行完操作后再執(zhí)行后續(xù)操作。最常見的場景就是異步調(diào)用多個(gè)接口淘这,等多個(gè)接口執(zhí)行完...
1. 概述 Semaphore翻譯成中文是信號量剥扣,是通過AQS實(shí)現(xiàn)的多線程工具類。Semaphore信號量主要用于兩個(gè)目的铝穷,一個(gè)是用于多個(gè)線程對多個(gè)共享資源的互斥使用钠怯,另一個(gè)...
讀寫鎖用的是同一個(gè)Sync同步器,因此等待隊(duì)列氧骤、state等也是同一個(gè) t1 w.lock呻疹,t2 r.lock t1 成功上鎖,流程與 ReentrantLock 加鎖相比沒...
1. 非公平鎖實(shí)現(xiàn)原理 加鎖解鎖流程 先從構(gòu)造器開始看筹陵,默認(rèn)為非公平鎖實(shí)現(xiàn)刽锤,NonfairSync 繼承自 AQS 沒有競爭時(shí) 第一個(gè)競爭出現(xiàn)時(shí) Thread-1 執(zhí)行了 C...
過小會(huì)導(dǎo)致程序不能充分地利用系統(tǒng)資源,容易導(dǎo)致饑餓 過大會(huì)導(dǎo)致更多的線程上下文切換朦佩,占用更多內(nèi)存 1. CPU 密集型運(yùn)算 通常采用 cpu 核數(shù) + 1 能夠?qū)崿F(xiàn)最優(yōu)的CP...
1. 概述 LongAdder是jdk1.8新增加的原子累加器并思,相較于AtomicLong,LongAdder有更加優(yōu)秀的性能语稠。 2. 原理 LongAdder在沒有線程競爭...
1. 概述 什么是緩存行偽共享宋彼?這個(gè)就需要說下計(jì)算機(jī)的硬件組成,CPU的高速緩存是由緩存行組成的仙畦,通常是64字節(jié)输涕,并且它有效地引用主內(nèi)存中的一塊地址。在程序運(yùn)行過程中慨畸,每次更...
1. 概述 CAS全程為Compare And Set(也有Compare And Swap的說明)莱坎,它是一條CPU并發(fā)原語。它的功能是判斷內(nèi)存某個(gè)位置的值是否為預(yù)期值寸士,如果...
1. 概述 LockSupport檐什,構(gòu)建同步組件的基本工具,幫AQS完成相應(yīng)線程的阻塞或者喚醒的工作弱卡。 2. 主要方法 主要介紹LockSupport類的park()和unp...
1. 線程復(fù)用 ThreadPoolExecutor是如何實(shí)現(xiàn)線程復(fù)用的呢乃正?讓我們直接從ThreadPoolExecutor源碼中找尋答案。 ThreadPoolExecut...
1. 線程池概念 線程池:簡單來說婶博,它就是一個(gè)管理線程的池子瓮具。 幫我們管理線程,避免增加創(chuàng)建線程和銷毀線程的資源損耗。因?yàn)榫€程其實(shí)也是一個(gè)對象搭综,創(chuàng)建一個(gè)對象垢箕,需要經(jīng)過類加載過...
對于線程狀態(tài)有幾種拧粪?有說5種的蘑辑,還有的說是6種的胡本。其實(shí)我們可以從不同角度來看待這個(gè)問題。 1. 操作系統(tǒng) 如果從操作系統(tǒng)角度來看待線程狀態(tài)蒋歌,應(yīng)該有5種。 【初始狀態(tài)】:僅是在...