Mysql的儲存引擎之:MEMORY儲存引擎
MEMORY儲存引擎
Memory儲存的表就是記憶體表。實際的資料儲存在記憶體中,磁碟中只有表結構定義檔案。
Mysql服務單獨給memory儲存引擎的表分配記憶體空間,而且表一直持有這些記憶體空間(即使刪除資料也不釋放記憶體),直到有drop、alter、create等重建物件才能釋放記憶體。
注:記憶體的佔用空間由max_heap_table_size引數控制,預設16M。
當心!當Mysql服務關閉時,資料會丟失。
建立Memory儲存引擎的表
建立一個基於Memory儲存引擎的表table_memory:
mysql> create table table_memory(id int) engine=memory; Query OK, 0 rows affected (0.02 sec)
檢視下table_memory表的佔用空間大小(Max_data_length欄位):
空間大小:16777216/1024/1024=16M
mysql> show table status like'table_memory'; | Name | Engine | Version | Row_format|Rows|Avg_row_length|Data_length| Max_data_length | table_memory | MEMORY | 10 | Fixed | 0 | 8 | 0 | 16777216 ……
檢視下table_memory表的資料檔案:
注:只有一個.frm的表結構定義檔案
[[email protected] test]$ ll
-rw-rw---- 1 mysql mysql 8556 Sep 2 14:00 table_memory.frm
max_heap_table_size引數
更改max_heap_table_size引數(更改為1M和4M),再建立兩個基於Memory儲存引擎的表table_memory_1M、table_memory_4M,測試一下佔用空間的大小:
注:更改的max_heap_table_size引數為會話級,而非全域性級
mysql> set max_heap_table_size=1024*1024; Query OK, 0 rows affected (0.01 sec) mysql> create table table_memory_1M(idint) engine=memory; Query OK, 0 rows affected (0.05 sec) mysql> set max_heap_table_size=1024*1024*4; Query OK, 0 rows affected (0.00 sec) mysql> create table table_memory_4M(idint) engine=memory; Query OK, 0 rows affected (0.01 sec)
檢視佔用空間大小:分別是16M、1M、4M
mysql> show table status like'table_memory%';
| Name | Engine | Version|Row_format | Rows |Avg_row_length | Data_length | Max_data_length
| table_memory | MEMORY | 10 | Fixed | 0 | 8 | 0 | 16777216
| table_memory_1M | MEMORY | 10 | Fixed | 0 | 8 | 0 | 1048576
| table_memory_4M | MEMORY | 10 | Fixed | 0 | 8 | 0 | 4194304
……
重啟Mysql服務,資料和空間的變化
向table_memory表中插入一條資料:
mysql> insert into table_memory values(11);
Query OK, 1 row affected (0.00 sec)
mysql> select * from table_memory;
+------+
| id |
+------+
| 11 |
+------+
1 row in set (0.00 sec)
重啟Mysql服務:
[[email protected] test]$ service mysqld restart;
Shutting down MySQL.... SUCCESS!
rm: cannot remove '/var/lock/subsys/mysql':Permission denied
Starting MySQL... SUCCESS!
再次查詢table_memory表,資料丟失:
mysql> select * from table_memory;
Empty set (0.00 sec)
再次檢視之前改過不同記憶體空間大小的三張表的狀態,都是16M了:
mysql> show table status like'table_memory%';
| Name | Engine | Version|Row_format | Rows |Avg_row_length | Data_length | Max_data_length
| table_memory | MEMORY | 10 | Fixed | 0 | 8 | 0 | 16777216
| table_memory_1M | MEMORY | 10 | Fixed | 0 | 8 | 0 | 16777216
| table_memory_4M | MEMORY | 10 | Fixed | 0 | 8 | 0 | 16777216
……
注:Mysql服務重啟後,所有表會自動繼承全域性的max_heap_table_size引數的值,所以都會變成16M
相關推薦
Mysql的儲存引擎之:MEMORY儲存引擎
MEMORY儲存引擎 Memory儲存的表就是記憶體表。實際的資料儲存在記憶體中,磁碟中只有表結構定義檔案。 Mysql服務單獨給memory儲存引擎的表分配記憶體空間,而且表一直持有這些記憶體空間(即使刪除資料也不釋放記憶體),直到有drop、alter、create
Mysql的儲存引擎之:MERGE儲存引擎
Merge是基於MyISAM儲存引擎的表,所以Merge儲存引擎也叫做MGR_MyISAM儲存引擎,作用是將一組MyISAM儲存引擎的表聚合成一張表。 Merge中要聚合的MyISAM表的列和索引必須有相同的定義及順序。 建立MERGE儲存引擎的表 建立兩個基於MyIS
MySQL資料庫知識點之MyIsam與InnoDB引擎的區別
MyIsam與InnoDB引擎的區別 MyIsam與InnoDB主要有以下4點大的區別: 快取機制 事務支援 鎖實現 資料物理儲存方式(包括索引和資料) 1 快取機制 MyIsam InnoDB MyIsam僅僅快取索引,不會
Openstack儲存總結之:使用Ceph叢集作為後端統一儲存
前提條件 一個可以正常執行的Ceph叢集,該叢集採用ceph-deploy建立,dataprovider為管理節點,包括三個MON,四個MON 以及Openstack叢集,其中Openstack叢集假設Cinder,Glance都是安裝在叫做controllernod
Android五種資料儲存方式之SQLite資料庫儲存 載入SD卡資料庫 sql操作 事務 防止SQL注入
資料庫 前言 資料庫儲存 資料庫建立 內建儲存資料庫 外接儲存資料庫 編寫DAO 插入操作 更新操作 刪除操作 查詢操作
規則引擎二:Drools規則引擎
原文連結:http://www.it165.net/pro/html/201503/36286.html Drools是一個開源的規則引擎,經過多年的發展,也提供如下商業BRMS具備的功能元件: 基於Eclipse的整合開發環境, 獨立集中的規則儲存庫 基於WE
作業系統儲存管理之頁式儲存管理深入淺出
用分割槽方式管理的儲存器,每道程式總是要求佔用主存的一個或幾個連續儲存區域,作業或程序的大小仍受到分割槽大小或記憶體可用空間的限制,因此,有時為了接納一個新的作業而往往要移動已在主存的資訊。這不僅不方便,而且開銷不小。採用分頁儲存器既可免去移動資訊的工作,又可儘
軟考(四)——儲存管理之頁式儲存
之前在總結作業系統這部分知識點的時候,發現儲存這部分的東西比較有意思,所以想把它單拿出來整理下,以便之後的學習,其實很簡單,下面我們來看下它是有多簡單的呢? 儲存管理 作業
儲存管理之分頁儲存管理方式C語言模擬(實驗五)
分頁儲存管理方式,將程式劃分為若干個大小固定的區域(頁),也把實體記憶體劃分為大小和頁相等的塊,通過頁表完成頁到塊的對映。 分頁儲存管理之C語言模擬: #include <stdio.h> #include <string.h> #i
Android 儲存學習之使用SharedPreference儲存檔案
上兩節我們都是使用文字檔案儲存使用者的資訊,這明顯是存在漏洞的。同時對檔案中的內容不好管理。今天我們學習用SharedPreference儲存。sharedPreference是專門儲存一些比較零散的資料的。 我們還是用上節的例子分析,將使用者的資訊使用SharedPref
MySQL架構三:儲存引擎之主要引擎
在檔案系統中,MySQL將每個資料庫(schema)儲存為資料目錄下的一個子目錄。建立表時,MySQL會在資料庫子目錄下建立一個和表名相同的.frm檔案儲存表的定義。例如建立一個名為MyTable的表,MySQL會在MyTable.frm檔案中儲存該表的定義。因為MySQL使用檔案系統的目錄和檔案來
Learning-MySQL【2】:MySQL儲存引擎及資料庫的操作管理
一、儲存引擎 儲存引擎實際上就是如何儲存資料、如何為儲存的資料建立索引和如何更新、查詢資料。儲存引擎也可以稱為表型別。 MySQL提供了外掛式(pluggable)的儲存引擎,儲存引擎是基於表的。同一個資料庫,不同的表,儲存引擎可以不同。甚至,同一個資料庫表在不同的場合可以應用不同的儲存引擎。 檢視當前
MySQL儲存引擎之Spider核心深度解析
作者介紹 朱閱岸,中國人民大學博士,現供職於騰訊雲資料庫團隊。研究方向主要為資料庫系統理論與實現、新硬體平臺下的資料庫系統以及TP+AP型混合系統。 Spider是為MySQL/MariaDB開發的一個特殊引擎,具有內嵌分片功能。現在它已經被
《MySQL技術內幕:InnoDB儲存引擎》——第3章 檔案
引數檔案 mysql --help | grep my.cnf mysql> show variables;//檢視引數 mysql> set read_buffer_size = 524288;//設定會話動態引數 mysql> set @@global.read
《MySQL技術內幕:InnoDB儲存引擎》——第2章 InnoDB儲存引擎
mysql> show engine innodb status;//檢視innodb儲存引擎狀態 mysql> show variables like 'innodb_version';//檢視innodb儲存引擎版本 mysql> show variables like
《MySQL技術內幕:InnoDB儲存引擎》——第1章 MySQL體系結構和儲存引擎
啟動 ./mysqld_safe & 檢視程序 ps -ef|grep mysqld 資料庫例項啟動時,讀取配置檔案的順序,後面的檔案配置會覆蓋前面的檔案配置 mysql --help | grep my.cnf mysql> show variables li
MySQL技術內幕:InnoDB儲存引擎-筆記
Innodb將通過主鍵聚集資料,如果沒有定義主鍵,Innodb會選擇第一個非空的唯一索引代替,如果沒有非空唯一索引,Innodb會隱式定義一個6位元組的rowid主鍵來作為聚集索引。 索引的底層原理(Page164) B+樹是為磁碟或其他直接存取輔助裝置而設計的一種
《MySQL技術內幕:InnoDB儲存引擎》一文中示例總結
第1章 MySQL體系結構和儲存引擎 啟動 ./mysqld_safe & 檢視程序 ps -ef|grep mysqld 資料庫例項啟動時,讀取配置檔案的順序,後面的檔案配置會覆蓋前面的檔案配置 mysql --help | grep my.cnf m
MySQL技術內幕 InnoDB儲存引擎 之 InnoDB體系架構
後臺執行緒 1.Master Thread 2.IO Thread 3.Purge Thread 4.Page Cleaner Thread 記憶體 重做日誌在以下三
《MySQL技術內幕:InnoDB儲存引擎(第2版)》書摘
MySQL技術內幕:InnoDB儲存引擎(第2版) 姜承堯 第1章 MySQL體系結構和儲存引擎 >> 在上述例子中使用了mysqld_safe命令來啟動資料庫,當然啟動MySQL例項的方法還有很多,在各種平臺下的方式可能又會有所不同。 >> 當啟