數(shù)據(jù)庫(kù)小結(jié)

常見(jiàn)問(wèn)題

分庫(kù)分表

對(duì)于海量數(shù)據(jù)葛虐,且有一定的并發(fā)量的分庫(kù)分表,絕不是引入某一個(gè)分庫(kù)分表中間件就能解決問(wèn)題棉钧,而是一項(xiàng)系統(tǒng)的工程屿脐。需要分析整個(gè)表相關(guān)的業(yè)務(wù),讓合適的中間件做它最擅長(zhǎng)的事情宪卿。例如有sharding column的查詢走分庫(kù)分表的诵,一些模糊查詢,或者多個(gè)不固定條件篩選則走es佑钾,海量存儲(chǔ)則交給HBase西疤。

做了這么多事情后,后面還會(huì)有很多的工作要做休溶,比如數(shù)據(jù)同步的一致性問(wèn)題代赁,還有運(yùn)行一段時(shí)間后,某些表的數(shù)據(jù)量慢慢達(dá)到單表瓶頸兽掰,這時(shí)候還需要做冷數(shù)據(jù)遷移芭碍。

參考文檔

https://www.cnblogs.com/twoheads/p/10715498.html

緩存

image
image
image
image
image
image
image
image
image
image
image

mysql

image
image
image

官方資料

https://dev.mysql.com/doc/refman/8.0/en/

整體架構(gòu)
image
SQL層的功能

select * from wordpress.user;

DDL 數(shù)據(jù)庫(kù)定義語(yǔ)言

DCL 數(shù)據(jù)庫(kù)控制語(yǔ)言

DML 數(shù)據(jù)庫(kù)操作語(yǔ)言

DQL 數(shù)據(jù)查詢語(yǔ)言

1、判斷語(yǔ)法孽尽、語(yǔ)句窖壕、語(yǔ)義

判斷語(yǔ)句類型 2、數(shù)據(jù)庫(kù)不能直接響應(yīng)sql語(yǔ)句

必須明確的知道數(shù)據(jù)在哪個(gè)磁盤(pán)  3杉女、數(shù)據(jù)庫(kù)對(duì)象授權(quán)情況判斷

授權(quán)失敗不繼續(xù)4瞻讽、解析(解析器)

將sql語(yǔ)句解析成執(zhí)行計(jì)劃,運(yùn)行執(zhí)行計(jì)劃熏挎,生成找數(shù)據(jù)的方式5速勇、優(yōu)化 (優(yōu)化器)

運(yùn)行執(zhí)行計(jì)劃

5.6之后 基于代價(jià)的算法,從執(zhí)行計(jì)劃中選擇代價(jià)最小的交給"執(zhí)行器"6坎拐、"執(zhí)行器" 運(yùn)行執(zhí)行計(jì)劃

最終生產(chǎn)如何去磁盤(pán)找數(shù)據(jù)方式7烦磁、將取數(shù)據(jù)的方式,交由下層(存儲(chǔ)引擎層)進(jìn)行處理8廉白、最終將取出的數(shù)據(jù)抽象成管理員或用戶能看懂的方式(表)个初,展現(xiàn)在用戶面前9乖寒、查詢緩存: 緩存之前查詢的數(shù)據(jù)猴蹂。

假如我們查詢的表是一個(gè)經(jīng)常有變動(dòng)的表,查詢緩存不要設(shè)置太大
存儲(chǔ)引擎

存儲(chǔ)引擎用于:

存儲(chǔ)數(shù)據(jù)楣嘁、檢索數(shù)據(jù)磅轻、通過(guò)索引查找數(shù)據(jù)

    存儲(chǔ)介質(zhì)珍逸、  事務(wù)功能、  鎖定聋溜、備份和恢復(fù)谆膳、優(yōu)化

特殊功能:

全文搜索、引用完整性撮躁、空間數(shù)據(jù)處理

雙層處理

上層包括SQL解析器和優(yōu)化器漱病、下層包含一組存儲(chǔ)引擎

SQL 層不依賴于存儲(chǔ)引擎:

引擎不影響SQL處理

版本信息

1. MySQL Community Server 社區(qū)版本,開(kāi)源免費(fèi)把曼,但不提供官方技術(shù)支持杨帽。

2. MySQL Enterprise Edition 企業(yè)版本线脚,需付費(fèi)屹篓,可以試用30天。

3. MySQL Cluster 集群版斋否,開(kāi)源免費(fèi)叙赚±峡停可將幾個(gè)MySQL Server封裝成一個(gè)Server。

4. MySQL Cluster CGE 高級(jí)集群版震叮,需付費(fèi)胧砰。

5. MySQL Workbench(GUITOOL)一款專為MySQL設(shè)計(jì)的ER/數(shù)據(jù)庫(kù)建模工具。它是著名的數(shù)據(jù)庫(kù)設(shè)計(jì)工具DBDesigner4的繼任者苇瓣。MySQLWorkbench又分為兩個(gè)版本朴则,分別是社區(qū)版(MySQL Workbench OSS)、商用版(MySQL WorkbenchSE)钓简。

版本特性

功能

MySQL數(shù)據(jù)庫(kù)從5.7.8版本開(kāi)始乌妒,也提供了對(duì)JSON的支持。對(duì)比PG和mysql:

1. 在共有功能上外邓,pg比mysql要快一些

2. pg比mysql多一些操作json的函數(shù)

3. pg自定義函數(shù)功能比較強(qiáng)撤蚊,針對(duì)json操作可以較好地進(jìn)行模塊化開(kāi)發(fā),不一定要全部揉在一個(gè)sql里

4. pg支持函數(shù)索引损话,這樣可以對(duì)json中的某個(gè)值建立索引而不用在表上加減字段

image

選擇:

如果對(duì)json有頻繁的操作侦啸,而且需要復(fù)雜的操作,現(xiàn)階段來(lái)說(shuō)pg是你唯一的選擇

如果對(duì)json操作功能性要求比較少丧枪,并且對(duì)其操作的強(qiáng)度也不高光涂,建議選擇最熟悉的數(shù)據(jù)庫(kù)

一切都是發(fā)展的,說(shuō)不定未來(lái)mysql對(duì)json的支持會(huì)越來(lái)越好拧烦,所以如果沒(méi)必要忘闻,選擇自己/團(tuán)隊(duì)最熟悉的數(shù)據(jù)庫(kù)

pg的json和jsonb

從PostgreSQL 9.3開(kāi)始,json就成了postgres里的一種數(shù)據(jù)類型恋博。jsonb格式是json的二進(jìn)制形式齐佳,二者的區(qū)別在于json寫(xiě)入快私恬,讀取慢,jsonb寫(xiě)入慢炼吴,讀取快本鸣,但在操作上,二者是沒(méi)有區(qū)別的

(1)json存儲(chǔ)快硅蹦,使用慢荣德; 存的時(shí)候不做處理,使用時(shí)再解析

(2)jsonb存儲(chǔ)稍慢童芹,存儲(chǔ)時(shí)就做了解析命爬,使用時(shí)速度較快

(3)兩者的部分函數(shù)很相似,稍有區(qū)別

generate column辐脖, generated column是MySQL 5.7引入的新特性饲宛,所謂generated column,就是數(shù)據(jù)庫(kù)中這一列由其他列計(jì)算而得嗜价。

性能

在MySQL 5.7中艇抠,性能相關(guān)的改進(jìn)非常多,包括臨時(shí)表相關(guān)的性能改進(jìn)久锥、只讀事務(wù)的性能優(yōu)化家淤、連接建立速度的優(yōu)化和復(fù)制性能的改進(jìn)。

臨時(shí)表的性能改進(jìn)

MySQL 5.7 為了提高臨時(shí)表相關(guān)的性能瑟由,對(duì)臨時(shí)表相關(guān)的部分進(jìn)行了大幅修改絮重,包括引入新的臨時(shí)表空間;對(duì)于臨時(shí)表的DDL歹苦,不持久化相關(guān)表定義青伤;對(duì)于臨時(shí)表的DML,不寫(xiě)redo殴瘦,關(guān)閉change buffer等狠角。所有臨時(shí)表的改動(dòng),都基于以下兩個(gè)事實(shí) :

1.臨時(shí)表只在當(dāng)前會(huì)話中可見(jiàn)

2.臨時(shí)表的生命周期是當(dāng)前連接(MySQL宕機(jī)或重啟蚪腋,則當(dāng)前連接結(jié)束)

也就是說(shuō)丰歌,對(duì)于臨時(shí)表的操作,不需要其他數(shù)據(jù)一樣嚴(yán)格地進(jìn)行一致性保證屉凯。通過(guò)不持久化元信息立帖,避免寫(xiě)redo等方式,減少臨時(shí)表操作的IO悠砚,以提高臨時(shí)表操作的性能晓勇。

可用性

在線設(shè)置 復(fù)制的過(guò)濾規(guī)則 不再需要重啟MySQL,只需要停止SQL thread,修改完成以后宵蕉,啟動(dòng)SQL thread

在線修改buffer pool的大小

Online DDL MySQL 5.7支持重命名索引和修改varchar的大小酝静,這兩項(xiàng)操作在之前的版本中节榜,都需要重建索引或表

ALTER TABLE t1 ALGORITHM=INPLACE, CHANGE COLUMN c1 c1 VARCHAR(255);

在線開(kāi)啟GTID 羡玛,在之前的版本中,由于不支持在線開(kāi)啟GTID宗苍,用戶如果希望將低版本的數(shù)據(jù)庫(kù)升級(jí)到支持GTID的數(shù)據(jù)庫(kù)版本稼稿,需要先關(guān)閉數(shù)據(jù)庫(kù),再以GTID模式啟動(dòng)讳窟,所以導(dǎo)致升級(jí)起來(lái)特別麻煩让歼。MySQL 5.7以后,這個(gè)問(wèn)題不復(fù)存在

高可用方案

點(diǎn)擊鏈接進(jìn)入:高可用方案

mysql常見(jiàn)命令

常見(jiàn)命令

索引

索引

分布式事務(wù)

分布式事務(wù)

分布式數(shù)據(jù)庫(kù)中間件

分布式數(shù)據(jù)庫(kù)中間件

參數(shù)理解

系統(tǒng)默認(rèn)參數(shù)

數(shù)據(jù)庫(kù)版本:mysql Ver 14.14 Distrib 5.7.27-30, for Linux (x86_64) using 6.2

事務(wù)隔離級(jí)別

tx_isolation | REPEATABLE-READ

transaction_isolation | REPEATABLE-READ

線程池大小

| thread_pool_size | 2 |

| thread_pool_stall_limit | 500

| thread_pool_high_prio_tickets | 4294967295 |

| thread_pool_idle_timeout | 60 | thread_pool_max_threads | 100000

binlog三種復(fù)制方式

二進(jìn)制binlog的格式有三種:

statement:基于sql的binlog丽啡,每條修改數(shù)據(jù)的sql都會(huì)保存到binlog里谋右。

row:基于行級(jí)別,記錄每一行數(shù)據(jù)的變化补箍,也就是將每一行數(shù)據(jù)的變化都記錄到binlog里改执,記錄非常詳細(xì)。

mixed:混合statement和row模式坑雅。

WAL

WAL介紹

數(shù)據(jù)庫(kù)中間件

分類

主要是mysql proxy,Amoeba, mycat 和 shardding jdbc

Mysql proxy

MySQL讀寫(xiě)分離是指讓master處理寫(xiě)操作辈挂,讓slave處理讀操作,非常適用于讀操作量比較大的場(chǎng)景裹粤,可減輕master的壓力终蒂。

使用mysql-proxy實(shí)現(xiàn)mysql的讀寫(xiě)分離,mysql-proxy實(shí)際上是作為后端mysql主從服務(wù)器的代理遥诉,它直接接受客戶端的請(qǐng)求拇泣,對(duì)SQL語(yǔ)句進(jìn)行分析,判斷出是讀操作還是寫(xiě)操作矮锈,然后分發(fā)至對(duì)應(yīng)的mysql服務(wù)器上挫酿。

mysql-proxy是官方提供的mysql中間件產(chǎn)品可以實(shí)現(xiàn)負(fù)載平衡,讀寫(xiě)分離愕难,failover等

MySQL Proxy就是這么一個(gè)中間層代理早龟,簡(jiǎn)單的說(shuō),MySQL Proxy就是一個(gè)連接池猫缭,負(fù)責(zé)將前臺(tái)應(yīng)用的連接請(qǐng)求轉(zhuǎn)發(fā)給后臺(tái)的數(shù)據(jù)庫(kù)葱弟,并且通過(guò)使用lua腳本,可以實(shí)現(xiàn)復(fù)雜的連接控制和過(guò)濾猜丹,

從而實(shí)現(xiàn)讀寫(xiě)分離和負(fù)載平衡芝加。對(duì)于應(yīng)用來(lái)說(shuō),MySQL Proxy是完全透明的,應(yīng)用則只需要連接到MySQL Proxy的監(jiān)聽(tīng)端口即可藏杖。

當(dāng)然将塑,這樣proxy機(jī)器可能成為單點(diǎn)失效,但完全可以使用多個(gè)proxy機(jī)器做為冗余蝌麸,在應(yīng)用服務(wù)器的連接池配置中配置到多 個(gè)proxy的連接參數(shù)即可点寥。

Amoeba

下載地址: http://sourceforge.net/projects/amoeba/files/

Amoeba主要解決以下問(wèn)題:

a). 數(shù)據(jù)切分后復(fù)雜數(shù)據(jù)源整合

b). 提供數(shù)據(jù)切分規(guī)則并降低數(shù)據(jù)切分規(guī)則給數(shù)據(jù)庫(kù)帶來(lái)的影響

c). 降低數(shù)據(jù)庫(kù)與客戶端連接

d). 讀寫(xiě)分離路由

不足

a)、目前還不支持事務(wù)

b)来吩、暫時(shí)不支持存儲(chǔ)過(guò)程(近期會(huì)支持)

c)敢辩、不適合從amoeba導(dǎo)數(shù)據(jù)的場(chǎng)景或者對(duì)大數(shù)據(jù)量查詢的query并不合適(比如一次請(qǐng)求返回10w以上甚至更多數(shù)據(jù)的場(chǎng)合)

d)、暫時(shí)不支持分庫(kù)分表弟疆,amoeba目前只做到分?jǐn)?shù)據(jù)庫(kù)實(shí)例戚长,每個(gè)被切分的節(jié)點(diǎn)需要保持庫(kù)表結(jié)構(gòu)一致:

更多信息參考:http://www.reibang.com/p/4aec9f682509

shardding jdbc

http://www.reibang.com/writer#/notebooks/29164998/notes/54241036

Mycat

官方地址:http://www.mycat.org.cn/

github地址:https://github.com/MyCATApache/Mycat-Server

依賴關(guān)系速閱覽:https://github.com/MyCATApache/Mycat-Server/blob/1.6/pom.xml

主要功能

一個(gè)徹底開(kāi)源的,面向企業(yè)應(yīng)用開(kāi)發(fā)的大數(shù)據(jù)庫(kù)集群

支持事務(wù)怠苔、ACID同廉、可以替代MySQL的加強(qiáng)版數(shù)據(jù)庫(kù)

一個(gè)可以視為MySQL集群的企業(yè)級(jí)數(shù)據(jù)庫(kù),用來(lái)替代昂貴的Oracle集群

一個(gè)融合內(nèi)存緩存技術(shù)柑司、NoSQL技術(shù)迫肖、HDFS大數(shù)據(jù)的新型SQL Server

結(jié)合傳統(tǒng)數(shù)據(jù)庫(kù)和新型分布式數(shù)據(jù)倉(cāng)庫(kù)的新一代企業(yè)級(jí)數(shù)據(jù)庫(kù)產(chǎn)品

一個(gè)新穎的數(shù)據(jù)庫(kù)中間件產(chǎn)品

原理

**MyCAT通過(guò)定義表的分片規(guī)則來(lái)實(shí)現(xiàn)分片,每個(gè)表格可以捆綁一個(gè)分片規(guī)則帜羊,每個(gè)分片規(guī)則指定一個(gè)分片字段并綁定一個(gè)函數(shù)咒程,來(lái)實(shí)現(xiàn)動(dòng)態(tài)分片算法 **

**1.Schema:邏輯庫(kù),與MySQL中的Database(數(shù)據(jù)庫(kù))對(duì)應(yīng)讼育,一個(gè)邏輯庫(kù)中定義了所包括的Table帐姻。 **

**2.Table:邏輯表,即物理數(shù)據(jù)庫(kù)中存儲(chǔ)的某一張表奶段,與傳統(tǒng)數(shù)據(jù)庫(kù)不同饥瓷,這里的表格需要聲明其所存儲(chǔ)的邏輯數(shù)據(jù)節(jié)點(diǎn)DataNode。在此可以指定表的分片規(guī)則痹籍。 **

**3.DataNode:MyCAT的邏輯數(shù)據(jù)節(jié)點(diǎn)呢铆,是存放table的具體物理節(jié)點(diǎn),也稱之為分片節(jié)點(diǎn)蹲缠,通過(guò)DataSource來(lái)關(guān)聯(lián)到后端某個(gè)具體數(shù)據(jù)庫(kù)上 **

4.DataSource:定義某個(gè)物理庫(kù)的訪問(wèn)地址棺克,用于捆綁到Datanode上

5、分片規(guī)則:前面講了數(shù)據(jù)切分线定,一個(gè)大表被分成若干個(gè)分片表娜谊,就需要一定的規(guī)則,這樣按照某種業(yè)務(wù)規(guī)則把數(shù)據(jù)分到某個(gè)分片的規(guī)則就是分片規(guī)則斤讥,數(shù)據(jù)切分選擇合適的分片規(guī)則非常重要纱皆,將極大的避免后續(xù)數(shù)據(jù)處理的難

image

優(yōu)勢(shì)

基于阿里開(kāi)源的Cobar產(chǎn)品而研發(fā),Cobar的穩(wěn)定性、可靠性派草、優(yōu)秀的架構(gòu)和性能以及眾多成熟的使用案例使得MYCAT一開(kāi)始就擁有一個(gè)很好的起點(diǎn)搀缠,站在巨人的肩膀上,我們能看到更遠(yuǎn)近迁。業(yè)界優(yōu)秀的開(kāi)源項(xiàng)目和創(chuàng)新思路被廣泛融入到MYCAT的基因中艺普,使得MYCAT在很多方面都領(lǐng)先于目前其他一些同類的開(kāi)源項(xiàng)目,甚至超越某些商業(yè)產(chǎn)品钳踊。

長(zhǎng)期規(guī)劃2.0

完全實(shí)現(xiàn)分布式事務(wù)衷敌,完全的支持分布式勿侯。

通過(guò)Mycat web(eye)完成可視化配置拓瞪,及智能監(jiān)控,自動(dòng)運(yùn)維助琐。

通過(guò)mysql 本地節(jié)點(diǎn)祭埂,完整的解決數(shù)據(jù)擴(kuò)容難度,實(shí)現(xiàn)自動(dòng)擴(kuò)容機(jī)制兵钮,解決擴(kuò)容難點(diǎn)蛆橡。

支持基于zookeeper的主從切換及Mycat集群化管理。

通過(guò)Mycat Balance 替代第三方的Haproxy掘譬,LVS等第三方高可用泰演,完整的兼容Mycat集群節(jié)點(diǎn)的動(dòng)態(tài)上下線。

接入Spark等第三方工具葱轩,解決數(shù)據(jù)分析及大數(shù)據(jù)聚合的業(yè)務(wù)場(chǎng)景睦焕。

通過(guò)Mycat智能優(yōu)化,分析分片熱點(diǎn)靴拱,提供合理的分片建議垃喊,索引建議,及數(shù)據(jù)切分實(shí)時(shí)業(yè)務(wù)建議

1.6版本架構(gòu)

image

基于spring鏈接主從模式的服務(wù)端

https://blog.csdn.net/kingmax54212008/article/details/83716753

索引

組合索引

遵循左相關(guān)原則袜炕,與最左邊關(guān)聯(lián)系最強(qiáng)為原則本谜。

舉例如下:

CREATE TABLE mytable(

ID INT NOT NULL,

username VARCHAR(16) NOT NULL,

city VARCHAR(50) NOT NULL,

age INT NOT NULL

);

ALTER****TABLE mytable ADD****INDEX name_city_age (name(10),city,age);
如果分別在 usernname,city偎窘,age上建立單列索引乌助,讓該表有3個(gè)單列索引,查詢時(shí)和上述的組合索引效率也會(huì)大不一樣陌知,遠(yuǎn)遠(yuǎn)低于我們的組合索引他托。雖然此時(shí)有了三個(gè)索引,但MySQL只能用到其中的那個(gè)它認(rèn)為似乎是最有效率的單列索引纵诞。

建立這樣的組合索引上祈,其實(shí)是相當(dāng)于分別建立了下面三組組合索引:

usernname,city,age

usernname,city

usernname

相關(guān)參考:

https://blog.csdn.net/weixin_42181824/article/details/82261988

https://baijiahao.baidu.com/s?id=1615219189673304134&wfr=spider&for=pc

secondary index

除了聚簇索引之外的其他索引類型都屬于二級(jí)索引。在Innodb中,二級(jí)索引的每行數(shù)據(jù)都包含這條數(shù)據(jù)的主鍵列登刺,還有二級(jí)索引指定的列籽腕;聚簇索引中,innodb通過(guò)主鍵值來(lái)查找數(shù)據(jù)行纸俭。

mysql索引回表概念

(1)先通過(guò)普通索引(普通索引皇耗,唯一索引,組合索引)定位到主鍵值揍很;

(2)在通過(guò)聚集索引定位到行記錄郎楼;

這就是所謂的回表查詢,先定位主鍵值窒悔,再定位行記錄呜袁,然后根據(jù)行記錄數(shù)主鍵id掃描索引數(shù),查詢出數(shù)據(jù)简珠,它的性能較掃一遍索引樹(shù)更低

舉例說(shuō)明:當(dāng)有一個(gè)表有四個(gè)字段阶界,分別是id、name聋庵,age膘融、address四個(gè)字段,將id設(shè)置為主鍵索引祭玉,將name和age設(shè)置為組合索引

查詢語(yǔ)句如下:

select name, age, address from table where name = xxx and age = xxx

得出結(jié)論如下:根據(jù)組合索引規(guī)范氧映,最左原則和用法,其實(shí)組合索引用到了脱货。但是address字段沒(méi)有建立索引岛都,根據(jù)已經(jīng)通過(guò)索引查詢出的記錄的主鍵id,根據(jù)主鍵id在去遍歷索引樹(shù)獲取數(shù)據(jù)蹭劈,這個(gè)過(guò)程就叫做回表疗绣。

如果查詢語(yǔ)句變化下:

select id, name, age from table where name = xxx and age = xxx

得出結(jié)論如下:因?yàn)閕d已經(jīng)有索引,所以不需要回表铺韧,那么這就是覆蓋索引多矮。

索引優(yōu)化

全值匹配心上人(這是基本原則),最左前綴要遵行(聯(lián)合索引一般都圍繞最左前綴優(yōu)化)哈打;

帶頭大哥活才行(聯(lián)合索引從最左邊字段開(kāi)始使用)塔逃,中間兄弟規(guī)矩行(不能跳過(guò)中間的字段,跳過(guò)后索引無(wú)效)料仗;

索引列上少計(jì)算(索引列上盡量不要進(jìn)行計(jì)算)湾盗,范圍之后全完蛋(where后面使用范圍查詢的之后的索引無(wú)效);

like百分最右寫(xiě)(%號(hào)寫(xiě)最右邊立轧,寫(xiě)左邊會(huì)導(dǎo)致索引失效)格粪,覆蓋索引別寫(xiě)星(盡量避免select*這樣的語(yǔ)句躏吊,能寫(xiě)索引列最好);

空值不等還有or帐萎,索引失效最無(wú)情(is null比伏,is not null,!=疆导,<>赁项,or會(huì)導(dǎo)致索引無(wú)效);

https://blog.csdn.net/yhl_jxy/article/details/88636685

更全面的

http://www.reibang.com/p/21c9a9ee7a90

索引執(zhí)行

從源碼來(lái)看
https://blog.csdn.net/vipshop_fin_dev/article/details/79688717

分布式事務(wù)

協(xié)議

分布式基礎(chǔ)協(xié)議:CAP澈段, BASE

分布式事務(wù)協(xié)議或框架:XA悠菜,TCC,saga败富,本地消息表+最終一致性

XA協(xié)議

XA是一個(gè)分布式事務(wù)協(xié)議悔醋,由Tuxedo提出。XA中大致分為兩部分:事務(wù)管理器和本地資源管理器

分為兩個(gè)協(xié)議: 兩階段協(xié)議和三階段協(xié)議

三階段協(xié)議.

相比于兩階段的優(yōu)勢(shì):

  1. 協(xié)調(diào)器和參與者加入了超時(shí)機(jī)制

2. 準(zhǔn)備階段拆分為兩階段囤耳,防止參與者在準(zhǔn)備后發(fā)生奔潰無(wú)法知曉是否提交或回滾的不確定狀態(tài)所引起的延時(shí)和數(shù)據(jù)不一致問(wèn)題篙顺。

  1. 在precommit階段等待超時(shí)后會(huì)直接提交偶芍,解決了二階段單點(diǎn)故障后一直等待占用資源的問(wèn)題充择。

遺留的問(wèn)題:

當(dāng)?shù)谌齻€(gè)階段準(zhǔn)備發(fā)起abort時(shí),事務(wù)協(xié)調(diào)器出現(xiàn)故障匪蟀,會(huì)導(dǎo)致數(shù)據(jù)不一致

相關(guān)參考

https://www.cnblogs.com/cxxjohnson/p/9145548.html

存儲(chǔ)引擎

常見(jiàn)引擎:XtraDB MyISAM InnoDB NDB

XtraDB
優(yōu)點(diǎn):

可擴(kuò)展性:處理更多事務(wù)椎麦;在強(qiáng)大的服務(wù)器上進(jìn)行擴(kuò)展

性能:使用了XtraDB的Percona Server速度非常快材彪,事務(wù)處理能力是innodb的2.7倍观挎。

可靠性:避免損壞,提供崩潰安全(crash-safe)復(fù)制

管理:在線備份段化,在線表格導(dǎo)入/導(dǎo)出

診斷:高級(jí)分析和檢測(cè)

靈活性:可變的頁(yè)面大小嘁捷,改進(jìn)的緩沖池管理

產(chǎn)品Percona 和MariaDB
percona開(kāi)發(fā)了xtraDB存儲(chǔ)引擎。mariaDB使用了XtraDb显熏,同時(shí)也提供myisam和innodb雄嚣,是mysql的替代品,由mysql的創(chuàng)建者M(jìn)onty Widenius成立一個(gè)家非盈利公司維護(hù)喘蟆,公司由產(chǎn)品驅(qū)動(dòng)缓升,后續(xù)的發(fā)展具有不可確定性。

MariaDB
另一款提供了XtraDB存儲(chǔ)引擎的產(chǎn)品是MariaDB產(chǎn)品蕴轨。它與Percona產(chǎn)品非常類似港谊,但是提供了更多底層代碼更改,試圖提供比標(biāo)準(zhǔn)MySQL更多的性能改進(jìn)橙弱。MariaDB直接利用來(lái)自Percona的XtraDB引擎歧寺,由于它們使用的是完全相同的引擎燥狰,因此每次使用存儲(chǔ)引擎時(shí)沒(méi)有顯著的差別。

產(chǎn)品Drizzle
mysql的一分支斜筐,對(duì)mysql做了重大修改

  1. 語(yǔ)言從c到c++的變更

  2. 完全開(kāi)源

  3. 價(jià)格是mysql 的一半碾局,目標(biāo)云市場(chǎng)

  4. 瞄準(zhǔn)高可用,修改一些已知的bug

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末奴艾,一起剝皮案震驚了整個(gè)濱河市净当,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌蕴潦,老刑警劉巖像啼,帶你破解...
    沈念sama閱讀 212,718評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異潭苞,居然都是意外死亡忽冻,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,683評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門(mén)此疹,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)僧诚,“玉大人,你說(shuō)我怎么就攤上這事蝗碎『浚” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 158,207評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵蹦骑,是天一觀的道長(zhǎng)慈省。 經(jīng)常有香客問(wèn)我,道長(zhǎng)眠菇,這世上最難降的妖魔是什么边败? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,755評(píng)論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮捎废,結(jié)果婚禮上笑窜,老公的妹妹穿的比我還像新娘。我一直安慰自己登疗,他們只是感情好排截,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,862評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著谜叹,像睡著了一般匾寝。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上荷腊,一...
    開(kāi)封第一講書(shū)人閱讀 50,050評(píng)論 1 291
  • 那天艳悔,我揣著相機(jī)與錄音,去河邊找鬼女仰。 笑死猜年,一個(gè)胖子當(dāng)著我的面吹牛抡锈,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播乔外,決...
    沈念sama閱讀 39,136評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼床三,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了杨幼?” 一聲冷哼從身側(cè)響起撇簿,我...
    開(kāi)封第一講書(shū)人閱讀 37,882評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎差购,沒(méi)想到半個(gè)月后四瘫,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,330評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡欲逃,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,651評(píng)論 2 327
  • 正文 我和宋清朗相戀三年找蜜,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片稳析。...
    茶點(diǎn)故事閱讀 38,789評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡洗做,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出彰居,到底是詐尸還是另有隱情诚纸,我是刑警寧澤,帶...
    沈念sama閱讀 34,477評(píng)論 4 333
  • 正文 年R本政府宣布裕菠,位于F島的核電站咬清,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏奴潘。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,135評(píng)論 3 317
  • 文/蒙蒙 一影钉、第九天 我趴在偏房一處隱蔽的房頂上張望画髓。 院中可真熱鬧,春花似錦平委、人聲如沸奈虾。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,864評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)肉微。三九已至,卻和暖如春蜡塌,著一層夾襖步出監(jiān)牢的瞬間碉纳,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,099評(píng)論 1 267
  • 我被黑心中介騙來(lái)泰國(guó)打工馏艾, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留劳曹,地道東北人奴愉。 一個(gè)月前我還...
    沈念sama閱讀 46,598評(píng)論 2 362
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像铁孵,于是被迫代替她去往敵國(guó)和親锭硼。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,697評(píng)論 2 351

推薦閱讀更多精彩內(nèi)容