一、關係型資料庫與非關係型資料庫
1、關係型資料庫的特點:
1)資料以表格的形式出現
2)每行為各種記錄名稱
#3)每列為記錄名稱所對應的資料域
4)許多的行和列組成一張表單
# 5)若干的表單組成資料庫
2、關係型資料庫的優點:
1)複雜的查詢:可以使用SQL語句方便地在一個表格以及多個表格之間做非常複雜的資料查詢。
2)事務支援:使得對於安全效能很高的資料存取要求得以實現。
3、非關係型資料庫的優點:
1)效能:NOSQL是基於鍵值對的,可以想像成表中的主鍵和值的對應關係,不需要經過SQL層的解析,所以效能非常高。
2)可擴展性:同樣也是因為基於鍵值對,資料之間沒有耦合性,所以非常容易水平擴展。
問題:三種傳統資料庫之間的差異?
答:三者之間是根據資料之間的聯繫而去別的,層次性資料庫是樹狀結構、網狀型資料庫是連結指標結構、關係型資料庫是二維表結構。
二、事務(ACID)
#交易(transaction)是作為單一邏輯工作單元執行的一系列操作,這些操作作為一個整體一起向系統提交,要么都執行,要么都不執行。 事務是一個不可分割的工作邏輯單元。
交易必須具備以下四個屬性,簡稱ACID屬性:
原子性(atomicity) :事務是一個完整的操作。事物的各部操作是不可分的(原子的);要么都執行,要么都不執行;
一致性(consistency):當事務完成時,資料必須處於一致狀態;
隔離性(isolation):對資料進行修改的所有並發事務是彼此隔離的,這表明事務必須是獨立的,它不應以任何形式依賴或影響其他事務;
永久性(durability):事務完成後,它對資料庫的修改是永久的,事務日誌能夠保持事務的永久性。
交易的隔離等級:
#讀取未提交內容(又稱髒讀read uncommitted):指所有交易都可以看到其他未提交交易的執行結果。可能有髒讀、不可重複讀和幻讀問題。
讀取提交內容(read commited):一個交易只能看見已經提交的事務所所做的改變。可以避免髒讀,可能有不可重複讀和幻讀問題。
可重複讀取(repeatable read):是MySQL的預設交易隔離級別,它確保相同交易的多個實例在並發讀取資料時,會看到同樣的數據行。可以避免髒讀和不可重複讀,可能會有幻讀問題。
可串行化(serializable):是最高的隔離級別,它透過在每個讀取的資料行上加上共享鎖,使其不可能相互衝突,從而解決幻讀問題。可以避免髒讀、不可重複讀、幻讀。
並發交易帶來的問題:
1.更新遺失:兩個事務T1和T2讀入了相同資料並修改,T2提交的結果覆蓋了T1提交的結果,導致T1的修改被遺失。
2.髒讀:事務T1修改了某一數據,並將其寫回磁盤,事務T2讀取同一數據後,T1由於某種原因被撤銷,這時T1已修改過的數據恢復原值,T2讀到的數據就與資料庫中的數據不一致,則T2讀到的數據就為「髒」數據,即不正確的數據。
3.不可重複讀取:是指在一個交易內,多次讀取相同資料。在這個事務還沒結束時,另外一個事務也存取了該相同資料。那麼,在第一個事務中的兩次讀取資料之間,由於第二個事務的修改,那麼第一個事務兩次讀到的資料可能是不一樣的。這就發生了在一個事務內兩次相同的查詢讀到的資料是不一樣的,因此稱為是不可重複讀。
4.幻讀:例如:目前薪資為5000的員工有10人,事務A讀取所有薪資為5000的人數為10人。此時,事務B插入了一則薪資也為5000的記錄。這時,事務A再次讀取薪資為5000的員工,記錄為11人。此時就產生了幻讀。
不可重複讀取和幻讀的差別? 不可重複讀取的重點是修改,幻讀的重點在於新增或刪除。
MVCC(多重版本並發控制機制):InnoDB的MVCC,是透過在每行記錄後面保存兩個隱藏的列來實現的。分別保存了行的建立時間和行的刪除時間(這裡儲存的並不是實際的時間值,而是系統版本號)。每開始一個新的事務,系統版本號就會自動遞增。事務開始時刻的系統版本號碼會作為事務的ID,用來和查詢到的每行記錄的版本號進行比較,使用MVCC後可重複讀取隔離級別下不會出現幻讀現象。
三、儲存引擎
儲存引擎是資料庫底層軟體組織,資料庫管理系統(DBMS)使用資料引擎進行建立、查詢、更新和刪除資料。
1、InnoDB(聚集索引方式)
#innodb底層儲存結構為B 樹,樹的每個節點對應innodb的一個page ,page的大小是固定的,一般設為16K。其中非葉子節點只有鍵值,葉子節點包含完整資料。
使用場景:1)經常更新的表,是和處理多重並發的更新請求;
2)支援事務安全表( ACID),支援行鎖和外鍵;
3)可以透過bin-log日誌等恢復
innodb如果沒有設定主鍵,就會自動產生一個6位元組的主鍵(使用者不可見)。
2、MyISAM(非叢集索引方式)
#MyISAM在5.1之前是MySQL的預設儲存引擎,它強調的是效能,但是它不支援事務、也不支援行鎖和外鍵,支援表鎖;當插入或更新資料時,需要鎖住整個表,效率就會低一些。只快取索引,不快取真實資料。 MyISAM讀取資料時速度很快,而且不佔用大量的記憶體和儲存資源。
MyISAM允許沒有主鍵的存在,是一種靜態索引結構。
問題:MySQL中MyISAM與InnoDB的差別?
#答案:MySQL資料庫中,最常用的兩種引擎是innodb和myisam。 InnoDB是目前MySQL的預設儲存引擎。
1)事務方面:MyISAM強調的是效能,查詢速度比InnoDB類型更快,但不支援交易。 InnoDB提供事務支援。
2)外鍵:MyISAM不支援外鍵,InnoDB支援外鍵。
3)鎖:MyISAM只支援表格級鎖,InnoDB支援行級鎖和表級鎖,預設為行級鎖,行鎖大幅提高了多用戶並發操作的性能。 innodb比較適合插入和更新作業比較多的情況,而myisam則適合頻繁查詢的情況。另外,innodb表的行鎖也不是絕對的,如果在執行一個SQL語句時,MySQL不能確定要掃描的範圍,innodb同樣會鎖全表,例如:update table set num=1 where name like "�a% "。
4)全文索引:MyISAM支援全文索引,Innodb不支援全文索引。 innodb從MySQL5.6之後提供全文索引的支援。
5)表主鍵:myisam允許沒有主鍵的表存在;innodb:如果沒有設定主鍵,就會自動產生一個6位元組的主鍵(使用者不可見)。
6)表的具體行數:myisam:select count(*) from table,myisam只要簡單的讀出保存好的行數。因為myisam內建了一個計數器,count(*)時它直接從計數器中讀取。
innodb: does not save the specific number of rows in the table. That is to say, when executing select count(*) from table, innodb will scan the entire table to calculate how many rows there are.
Recommended learning: MySQL tutorial
以上是詳解MySQL資料庫之事務及儲存引擎的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本篇文章给大家带来了关于mysql的相关知识,其中主要介绍了关于架构原理的相关内容,MySQL Server架构自顶向下大致可以分网络连接层、服务层、存储引擎层和系统文件层,下面一起来看一下,希望对大家有帮助。

mysql的msi与zip版本的区别:1、zip包含的安装程序是一种主动安装,而msi包含的是被installer所用的安装文件以提交请求的方式安装;2、zip是一种数据压缩和文档存储的文件格式,msi是微软格式的安装包。

方法:1、利用right函数,语法为“update 表名 set 指定字段 = right(指定字段, length(指定字段)-1)...”;2、利用substring函数,语法为“select substring(指定字段,2)..”。

在mysql中,可以利用char()和REPLACE()函数来替换换行符;REPLACE()函数可以用新字符串替换列中的换行符,而换行符可使用“char(13)”来表示,语法为“replace(字段名,char(13),'新字符串') ”。

本篇文章给大家带来了关于mysql的相关知识,其中主要介绍了关于MySQL复制技术的相关问题,包括了异步复制、半同步复制等等内容,下面一起来看一下,希望对大家有帮助。

转换方法:1、利用cast函数,语法“select * from 表名 order by cast(字段名 as SIGNED)”;2、利用“select * from 表名 order by CONVERT(字段名,SIGNED)”语句。

在mysql中,可以利用REGEXP运算符判断数据是否是数字类型,语法为“String REGEXP '[^0-9.]'”;该运算符是正则表达式的缩写,若数据字符中含有数字时,返回的结果是true,反之返回的结果是false。

在mysql中,可利用“ALTER TABLE 表名 DROP INDEX unique key名”语句来删除unique key;ALTER TABLE语句用于对数据进行添加、删除或修改操作,DROP INDEX语句用于表示删除约束操作。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

SublimeText3 Linux新版
SublimeText3 Linux最新版

PhpStorm Mac 版本
最新(2018.2.1 )專業的PHP整合開發工具

Atom編輯器mac版下載
最受歡迎的的開源編輯器

SAP NetWeaver Server Adapter for Eclipse
將Eclipse與SAP NetWeaver應用伺服器整合。

禪工作室 13.0.1
強大的PHP整合開發環境