MYSQL框架和引擎

2021-08-28 02:29:26 字數 2267 閱讀 6552

注意:隨著mysql的更新,以下的以下結論可能會過時.下面的都是我從書中了解到的.請以最新的為準

mysql在軟體設計上採用基於元件的模組化設計,c/c++開發

包含以下字系統(模組)和核心庫

mysqlnd

mysql原生的驅動程式(mysql native driver)

mysqlnd是通過zend引擎訪問資料庫.mysqlnd使用zend引擎進行記憶體管理,因此它遵守php的記憶體限制設定,可分配更大的記憶體塊,會嘗試重用zval,並使用zval的快取,節省cpu資源

myisam優點

缺點:myisam是在讀頻率相對高的環境,或高寫入環境的最佳儲存引擎,但不適合讀寫都很高的環境.dml語句會導致表鎖定.

innodb優點

缺點選擇儲存引擎

1.當應用程式執行的大部分都是讀取操作時

myisam

2.當事務性和一致性非常重要時

innodb

3.當你又乙個包含很多連線表的複雜模式時

innodb

4.當不見得操作非常重要

innodb(myisam沒有防止資料崩潰的日誌,版本控制和記錄功能,並且幾乎所有myisam備份解決方案都需要某種形式的停機時間)

你給mysql的記憶體越多,效能越好,直到達到mysql的速度超過資料"工作集"的速度,達到這個速度之後,記憶體對mysql效能的影響就很小了

工作集

工作集:就是經常使用的資料集,你可能擁有乙個15gb的資料庫用於存放文章,當如果人們在你的搜尋介面中最多隻搜尋兩星期之內的文章,那麼工作集就是發布日誌小於14天的所有文章.一旦這個資料集可以輕鬆地放到記憶體中,效能的提高也基本上就到了極限,特別是當擁有乙個好的索引集時

每活動連線(動態)使用的記憶體數量

per_connection_memory = 

read_buffer_size //memory for sequential table scans

+read_rnd_buffer_size //memory fot buffering reads

+sort_buffer_size //memory for in mem sorts

+thread_stack //per connection memory

+join_buffer_size //memory for in mem table joins

每伺服器(固定)使用的記憶體數量

per_server_memory =

tmp_table_size //memory for all temp tables

+max_heap_table_size //max size of single temp table

+key_buffer_size //memory allocated for index blocks

+innodb_buffer_pool_size //main cache for innodb data

+innodb_additional_mem_pool_size //innodb record structure cache

+innodb_log_buffer_size //log file write buffer

+query_cache_size //compiled statement cache

mysql可以使用的最大記憶體定義

max_memory = per_connection_memory * max_connections +per_server_memory
mysql載入配置檔案mysql會從以下的位置查詢配置檔案,從上到下的順序載入.後面的檔案中指令優先於前面檔案的指令

高效能php應用開發

MySQL索引和引擎

在使用mysql或其他資料庫的時候,往往需要給表新增索引,這樣一般可以給資料的查詢速度帶來極大的提公升。索引,可以理解成一本書的目錄,用於快速了解和定位書本中的內容。而在mysql中,索引是幫助其高效獲取資料的 已排好序的資料結構 比如現在,mysql中有這麼一張表 test,需要進行查詢 sele...

mysql引擎和事務

對於應用程式和使用者來說,同樣一張表的資料無論用什麼引擎來儲存,看到的資料都是一樣的,只是不同的引擎在功能 占用空間大小 讀取效能等方面可能有所差別。mysql最常用的儲存引擎為innodb myisam和全文索引 5.5.5以前預設儲存引擎為myisam,5.5.5及之後預設儲存引擎為innodb...

mysql架構引擎 MySQL引擎

一般來說,mysql有以下幾種引擎 isam myisam heap innodb和berkley 資料庫 一般來說,mysql有以下幾種引擎 isam myisam heap innodb和berkley bdb 注意 不同的版本支援的引擎是有差異的。當然啦,如果你感覺自己的確技術高超,你還能夠使...