Servlet檔案下載實現
一、MySQL體系結構
1. 連線層
最上層是一些客戶端和連結服務,主要完成一些類似於連線處理、授權認證、及相關的安全方案。伺服器也會為安全接入的每個客戶
端驗證它所具有的操作許可權。
2. 服務層
第二層架構主要完成大多數的核心服務功能,如SQL介面,並完成快取的查詢, SQL 的分析和優化,部分內建函式的執行。所有跨存
儲引擎的功能也在這一層實現, 如過程、函式等。
3. 引擎層
儲存引擎真正的負責了MySQL中資料的儲存和提取,伺服器通過API和儲存引擎進行通訊。不同的儲存引擎具有不同的功能,這樣我們可以根據自己的需要,來選取合適的儲存引擎。
4. 儲存層
主要是將資料儲存在檔案系統之上,並完成與儲存引擎的互動。
二、儲存引擎介紹
1. 檢視儲存引擎
儲存引擎就是儲存資料、建立索引、更新/查詢資料等技術的實現方式。儲存引擎是基於表的,而不是基於庫的,所以儲存引擎也可被稱為表型別。
mysql5.5版本之後預設的引擎是InnoDB,可以根據sql語句檢視建表語句
#檢視建表語句 預設儲存引擎是InnoDB show create table account;
2. 建表時指定儲存引擎
create table 表名( 欄位1 欄位1型別, 欄位2 欄位2型別 )engine= innodb;
預設引擎就是innodb也可以省略不寫或者設定為其他儲存引擎
3. 查詢當前資料庫支援的儲存引擎
show engines;
三、儲存引擎特點
1. InnoDB
InnoDB是一種兼顧高可靠性和高效能的通用儲存引擎,在MySQL 5.5之後, InnoDB是預設的MySQL儲存引擎。
特點:
DML(增刪改)操作遵循ACID模型,支援事務
行級鎖,提高併發訪問效能
支援外來鍵FOREIGN KEY約束,保證資料的完整性和正確性
檔案:
xxx.ibd: xxx代表的是表名,innoDB引擎的每張表都會對應這樣一個表空間檔案, 儲存該表的表結構(frm、 sdi)、資料和索引。
引數: innodb_ file_per_table 代表每一張表對應一個表空間
InnoDB邏輯結構:
2. MyISAM
MylSAM是MySQL早期的預設儲存引擎。
特點:
不支援事務,不支援外來鍵
支援表鎖,不支援行鎖
訪問速度快
檔案:
xxx.sdi: 儲存表結構資訊
xxx.MYD: 儲存資料
xxx.MYI: 儲存索引
3. Memory
Memory引擎的表資料是儲存在記憶體中的,由於受到硬體問題、或斷電問題的影響,只能將這些表作為臨時表或快取使用。
特點:
記憶體存放
hash索引(預設)
檔案:
xxx.sdi:儲存表結構資訊
4. 三種儲存引擎的區別
四、儲存引擎的選擇
在選擇儲存引擎時,應該根據應用系統的特點選擇合適的儲存引擎。對於複雜的應用系統,還可以根據實際情況選擇多種儲存引擎進行組合。
1. InnoDB
是Mysq|的預設儲存引擎,支援事務、外來鍵。如果應用對事務的完整性有比較高的要求,在併發條件下要求資料的一致性,資料操作除了插入和查詢之外,還包含很多的更新、刪除操作,那麼InnoDB儲存引擎是比較合適的選擇。
2. MyISAM
如果應用是以讀操作和插入操作為主,只有很少的更新和刪除操作,並且對事務的完整性、併發性要求不是很高,那麼選擇這個儲存引擎是非常合適的。(此類場景的使用被MongoDB取代)
3. MEMORY
將所有資料儲存在記憶體中,訪問速度快,通常用於臨時表及快取。MEMORY的缺陷就是對錶的大小有限制,太大的表無法快取在記憶體中,而且無法保障資料的安全性。(此類場景更多的使用被Redis取代)