一、定義資料庫和例項
資料庫:
物理作業系統檔案或其他形式檔案型別的集合。資料庫檔案可以是frm、myd、ibd 結尾的檔案。
從概念上來說,資料庫是檔案的集合,是依照某種資料模型組織起來並存放於二級儲存器的資料集合;
例項:mysql資料庫由後台程序以及乙個共享記憶體區組成。共享記憶體可以被執行的後台執行緒所共享。 需要注意的是,資料庫例項才是真正用於運算元據庫檔案的。
從概念上來說,資料庫例項是程式,是位於使用者於作業系統之間的一層資料管理軟體,使用者對資料庫資料的任何操作,包括資料庫定義、資料查詢等都在例項下進行,應用程式只有通過資料庫例項才能和資料庫打交道。
ps:mysql是乙個單程序多執行緒架構的資料庫。也就是說mysql資料庫例項在系統中表現形式就是乙個程序。
二、mysql體系結構
根據上圖可以看出,mysql由以下幾個部分組成:
1. 連線池組建
2. 管理服務和工具組建
3. sql介面元件(sql inte***ce)
4. 查詢分析器(parser)
5. 優化器元件(optimizer)
6. 緩衝元件(cache & buffer)
7. 外掛程式式儲存引擎(pluggable storage engines)
8. 物理檔案 (file sysgtem & logs)
三、mysql儲存引擎
mysql與其他資料庫對比等一大特點就是獨有的外掛程式式體系結構,而每儲存引擎都有各自的特點,能夠根據具體的業務或者應用場景建立不同的儲存引擎表。
下面簡單的介紹以下mysql幾款常見的儲存引擎:
1、innodb儲存引擎:
innodb儲存引擎支援事務,設計目標主要面向oltp應用,特點是行鎖設計、支援外來鍵。ps:mysql5.6+開始支援全文索引。
2、myisam儲存引擎:
myisam儲存引擎不支援事務、表鎖設計,支援全文索引,主要面向一些olap資料庫應用。
3、ndb儲存引擎:
ndb儲存引擎是一款集群儲存引擎,特點是將資料全部放在記憶體中(mysql5.1+開始可以將非索引資料放在磁碟上)因此主鍵查詢的資料快,通過新增資料儲存節點,可以線性的提高資料庫效能,是高可用,高效能的集群系統。
4、memory儲存引擎:
memory儲存引擎將表中所有的資料放置記憶體中,如果資料庫重啟或者崩潰,資料將消失。memory所有預設使用雜湊索引。
5、archive儲存引擎:
只支援insert 和 select操作, 使用zlib演算法將資料行(row)壓縮儲存。 非常適合儲存歸檔資料,如日誌資訊。
6、federated
7、maria
一文讀懂Nginx
問 nginx的負載均衡演算法有什麼?預設是什麼演算法?答 1 輪詢 按請求的時間輪詢查空閒的後端伺服器 2 指定輪詢機率 機率的原因是後端伺服器的效能不均勻,好的多分點,差的少分點 3 固定ip繫結固定伺服器 預設是加權輪詢,就是優先訪問權重高的伺服器 問 nginx是單執行緒的嗎?答 是單執行緒...
一文讀懂SpringMVC
主要講的是dispatcherservlet這個類 ioc其實是乙個map,工程啟動後掃瞄路徑,根據類的全限定名建立bean 問 怎麼根據路徑找到方法?map還存key為 aaa value為該controller例項 問 autowired原理?自定義註解,在載入的時候,掃瞄controller層...
堆疊 一文讀懂
堆疊 stack 是一種先進後出的 操作受限的線性表,也可以直接稱為棧。可以把棧想象成乙個桶一樣,往這個桶裡面一層一層的放東西,先放進去的在裡面,後放進去的東西依次在外面。但取東西的時候就是先取靠近外面的,再依次一層層取裡面的。這就是 後進先出 last in first out 的原則。因此 棧 ...