MySQL 數(shù)據(jù)庫(kù)介紹
人類(lèi)在進(jìn)化的過(guò)程中,創(chuàng)造了數(shù)字晌涕、文字、符號(hào)等來(lái)進(jìn)行數(shù)據(jù)的記錄痛悯,但是隨著認(rèn)知能力和創(chuàng)造能力的提升余黎,數(shù)據(jù)量越來(lái)越大,對(duì)于數(shù)據(jù)的記錄和準(zhǔn)確查找载萌,成為了一個(gè)重大難題惧财。
計(jì)算機(jī)誕生后巡扇,數(shù)據(jù)開(kāi)始在計(jì)算機(jī)中存儲(chǔ)并計(jì)算,并設(shè)計(jì)出了數(shù)據(jù)庫(kù)系統(tǒng)垮衷。數(shù)據(jù)庫(kù)系統(tǒng)解決的問(wèn)題:持久化存儲(chǔ)厅翔,優(yōu)化讀寫(xiě),保證數(shù)據(jù)的有效性搀突。
當(dāng)前使用的數(shù)據(jù)庫(kù)刀闷,主要分為兩類(lèi):
- 文檔型,如Sqlite仰迁,就是一個(gè)文件甸昏,通過(guò)對(duì)文件的復(fù)制完成數(shù)據(jù)庫(kù)的復(fù)制
- 服務(wù)型,如Mysql徐许、Postgre施蜜,數(shù)據(jù)存儲(chǔ)在一個(gè)物理文件中,但是需要使用終端以Tcp/Ip協(xié)議連接雌隅,進(jìn)行數(shù)據(jù)庫(kù)的讀寫(xiě)操作
E-R模型
當(dāng)前物理的數(shù)據(jù)庫(kù)都是按照E-R模型進(jìn)行設(shè)計(jì)的
E表示entry翻默,實(shí)體
R表示relationship,關(guān)系
一個(gè)實(shí)體轉(zhuǎn)換為數(shù)據(jù)庫(kù)中的一個(gè)表
-
關(guān)系描述兩個(gè)實(shí)體之間的對(duì)應(yīng)規(guī)則(關(guān)系)恰起,包括
-
一對(duì)一
角色表中的一條數(shù)據(jù) 對(duì)應(yīng) 員工表中 的一條員工的數(shù)據(jù)
roles角色表
id role 1 ceo
-
staffs員工表
id | name | role_id |
---|---|---|
1 | 雷軍 | 1 |
-
一對(duì)多
一個(gè)班級(jí)表的一條數(shù)據(jù)可以對(duì)應(yīng)學(xué)生表中多條數(shù)據(jù)
id class 1 云計(jì)算1810 2 云計(jì)算1809
id | name | class_id |
---|---|---|
1 | 鯊魚(yú) | 1 |
2 | 閆雨欣 | 2 |
3 | 閆立行 | 2 |
反之就是 多對(duì)一
- 多對(duì)多(擴(kuò)展自修)
一個(gè)老師可以教授多個(gè)班級(jí)修械,一個(gè)班級(jí)可以有多個(gè)老師。
此時(shí)村缸,就需要三個(gè)表。
- 老師表
- 班級(jí)表
- 用來(lái)表示他們關(guān)系的表
這個(gè)第三張表就是多對(duì)多關(guān)系需要的表
teacher表
id | name |
---|---|
1 | 晗哥 |
2 | 西瓜甜 |
class表
id | name |
---|---|
1 | 云計(jì)算1810 |
2 | 云計(jì)算1809 |
3 | 云計(jì)算1808 |
teacher2class表
id | teacher_id | class_id |
---|---|---|
1 | 1 | 1 |
2 | 1 | 3 |
3 | 2 | 1 |
4 | 2 | 2 |
- 關(guān)系點(diǎn)表示被轉(zhuǎn)換為數(shù)據(jù)庫(kù)表中的一個(gè)列 武氓,在關(guān)系型數(shù)據(jù)庫(kù)中一行就是一個(gè)對(duì)象梯皿。
RDBMS
RDBMS 指的是關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng)。
RDBMS 是 SQL 的基礎(chǔ)县恕,同樣也是所有現(xiàn)代數(shù)據(jù)庫(kù)系統(tǒng)的基礎(chǔ)东羹,比如 微軟的 SQL Server和 Microsoft Access, IBM DB2, 甲骨文的Oracle以及開(kāi)源的 MySQL和PostgreSQL(讀作:post - gress - Q - L, 簡(jiǎn)略念為"postgres") 。
RDBMS 中的數(shù)據(jù)存儲(chǔ)在被稱(chēng)為表(tables)的數(shù)據(jù)庫(kù)對(duì)象中忠烛。
表是相關(guān)的數(shù)據(jù)項(xiàng)的集合属提,它由列和行組成。
MySQL 5.7主要特性:
- 更好的性能:對(duì)于多核CPU美尸、固態(tài)硬盤(pán)冤议、鎖有著更好的優(yōu)化,每秒100W QPS已不再是MySQL的追求师坎,下個(gè)版本能否上200W QPS才是吾等用戶(hù)更關(guān)心的
- 更好的InnoDB存儲(chǔ)引擎
- 更為健壯的復(fù)制功能:復(fù)制帶來(lái)了數(shù)據(jù)完全不丟失的方案恕酸,傳統(tǒng)金融客戶(hù)也可以選擇使用MySQL數(shù)據(jù)庫(kù)。此外胯陋,GTID在線(xiàn)平滑升級(jí)也變得可能
- 更好的優(yōu)化器:優(yōu)化器代碼重構(gòu)的意義將在這個(gè)版本及以后的版本中帶來(lái)巨大的改進(jìn)蕊温,Oracle官方正在解決MySQL之前最大的難題
- 原生JSON類(lèi)型的支持
- 更好的地理信息服務(wù)支持:InnoDB原生支持地理位置類(lèi)型袱箱,支持GeoJSON,GeoHash特性
- 新增sys庫(kù):以后這會(huì)是DBA訪(fǎng)問(wèn)最頻繁的庫(kù)
名詞解釋?zhuān)?/strong>
QPS:Queries Per Second意思是 每秒查詢(xún)率义矛,是一臺(tái)服務(wù)器每秒能夠響應(yīng)的查詢(xún)次數(shù)发笔,是對(duì)一個(gè)特定的查詢(xún)服務(wù)器在規(guī)定時(shí)間內(nèi)所處理流量多少的衡量標(biāo)準(zhǔn)。
MySQL 和 MariaDB
MariaDB是MySQL關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)的一個(gè)復(fù)刻凉翻,由社區(qū)開(kāi)發(fā)了讨,有商業(yè)支持,旨在繼續(xù)保持在GNU GPL下開(kāi)源噪矛。MariaDB的開(kāi)發(fā)是由MySQL的一些原始開(kāi)發(fā)者領(lǐng)導(dǎo)的量蕊,他們擔(dān)心甲骨文公司收購(gòu)MySQL后會(huì)有一些隱患。[5]
MariaDB打算保持與MySQL的高度兼容性艇挨,確保具有庫(kù)二進(jìn)制奇偶校驗(yàn)的直接替換功能残炮,以及與MySQL API和命令的精確匹配。[6] MariaDB自帶了一個(gè)新的存儲(chǔ)引擎Aria缩滨,它可以替代MyISAM势就,成為默認(rèn)的事務(wù)和非事務(wù)引擎。[7] 它最初使用XtraDB作為默認(rèn)存儲(chǔ)引擎脉漏,[8] 并從10.2版本切換回InnoDB苞冯。[9]
它的首席開(kāi)發(fā)人員是米卡埃爾·維德紐斯,他是MySQL AB的創(chuàng)始人之一侧巨,也是Monty Program AB的創(chuàng)始人舅锄。2008年1月16日,MySQL AB 宣布它已經(jīng)同意被太陽(yáng)微系統(tǒng)集團(tuán)以大約10億美元的價(jià)格收購(gòu)司忱。該項(xiàng)收購(gòu)已于2008年2月26日完成皇忿。MariaDB是以Monty的小女兒Maria命名的,就像MySQL是以他另一個(gè)女兒My命名的一樣.