面試之MySQL看這個就夠了

2021-10-03 21:39:38 字數 1541 閱讀 9512

關於二者的對比與總結:

1. count運算上的區別:因為myisam有快取表meta-data(行數等),因此在做count(*)時對於乙個結構很好的查詢是不需要消耗多少資源的。而對於innodb來說,則沒有這種快取。

2. 是否支援事務和崩潰後的安全恢復: myisam 強調的是效能,每次查詢具有原子性,其執行數度比innodb型別更快,但是不提供事務支援。但是innodb 提供事務支援事務,外部鍵等高階資料庫功能。 具有事務 (commit)、回滾(rollback)和崩潰修復能力(crash recovery capabilities)的事務安全(transaction-safe (acid compliant))型表。

3. 是否支援外來鍵: myisam不支援,而innodb支援。 myisam更適合讀密集的表,而innodb更適合寫密集的的表。 在資料庫做主從分離的情況下,經常選擇myisam作為主庫的儲存引擎。 一般來說,如果需要事務支援,並且有較高的併發讀取頻率(myisam的表鎖的粒度太大,所以當該表寫併發量較高時,要等待的查詢就會很多了),innodb是不錯的選擇。如果你的資料量很大(myisam支援壓縮特性可以減少磁碟的空間占用),而且不需要支援事務時,myisam是好的選擇。 

即myisam:有快取表、查詢快、不提供事務支援、不支援外來鍵、適合讀密集的表

innodb:無快取表、查詢較慢、提供事務支援、支援外來鍵、適合寫密集的表

資料庫分片的兩種常見方案:

客戶端**: 分片邏輯在應用端,封裝在jar包中,通過修改或者封裝jdbc層來實現。 當當網的 shardingjdbc 、阿里的tddl是兩種比較常用的實現。

中介軟體**: 在應用和資料中間加了乙個**層。分片邏輯統一維護在中介軟體服務中。 我們現在談的 mycat 、360的atlas、網易的ddb等等都是這種架構的實現。

什麼是事物?

事務是邏輯上的一組操作,要麼都執行,要麼都不執行。

事務經典也經常被拿出來說例子就是轉賬了。假如小明要給小紅轉賬1000元,這個轉賬會涉及到兩個關鍵操作就 是:將小明的餘額減少1000元,將小紅的餘額增加1000元。萬一在這兩個操作之間突然出現錯誤比如銀行系統崩 潰,導致小明餘額減少而小紅的餘額沒有增加,這樣就不對了。事務就是保證這兩個關鍵操作要麼都成功,要麼都要失敗。 

在典型的應用程式中,多個事務併發執行,經常會操作相同的資料來完成各自的任務(多個使用者對統一資料進行操 作)。併發雖然是必須的,但可能會導致以下的問題。

不可重複讀的重點是修改,幻讀的重點在於新增或者刪除。

sql 標準定義了四個隔離級別:

乙個事務對資料庫進行操作,這種操作的範圍是資料庫的全部行,然後第二個事務也在對這個資料庫操作,這種操作 可以是插入一行記錄或刪除一行記錄,那麼第乙個是事務就會覺得自己出現了幻覺,怎麼還有沒有處理的記錄呢? 或 者 怎麼多處理了一行記錄呢? 幻讀和不可重複讀有些相似之處 ,但是不可重複讀的重點是修改,幻讀的重點在於新增或者刪除。

簡單的MySQL操作20問!看這個就夠了

本篇部落格簡單的歸納了使用終端操作mysql資料庫的一些簡單操作,前提是安裝好了mysql,至於安裝mysql的教程,找找度娘,保姆式的教程都有的。安裝好之後可以使用workbench視覺化工具運算元據庫,或者使用終端運算元據庫 即命令列方式 這裡推薦使用命令列方式,這樣的話不管是windows系統...

Dockerfile看這篇就夠了

dockerfile是用來構建docker映象的構建檔案,是由一系列命令和引數構成的指令碼。構建三步驟 1.編寫dockerfile檔案 2.docker build 3.docker run 1 每條保留字指令都必須為大寫字母且後面要跟隨至少乙個引數 2 指令按照從上到下,順序執行 3 表示注釋 ...

Git 學習看這篇就夠了!

git是乙個開源的分布式版本控制系統,可以有效 高速的處理從很小到非常大的專案版本管理。可能新手會問 git和github有什麼關係啊?git是乙個版本控制工具 github是乙個用git做版本控制的專案託管平台 git 和github的關係 git的使用也是實際開發工作中不必可少的 必須熟練掌握的...