成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

MySQL內存表的特性與使用介紹

數據庫 MySQL
臨時表和內存表都可以人工創建,但臨時表更多的作用是系統自己創建后,組織數據以提升性能,如子查詢,臨時表在多個連接之間不能共享。這里只討論內存表創建表是,用engine=heap可創建(mysql5.5中已經不支持type,以后都用engine,形成習慣)。

內存表,就是放在內存中的表,所使用內存的大小可通過My.cnf中的max_heap_table_size指定,如max_heap_table_size=1024M,內存表與臨時表并不相同,臨時表也是存放在內存中,臨時表***所需內存需要通過tmp_table_size = 128M設定。當數據超過臨時表的***值設定時,自動轉為磁盤表,此時因需要進行IO操作,性能會大大下降,而內存表不會,內存表滿后,會提示數據滿錯誤。

臨時表和內存表都可以人工創建,但臨時表更多的作用是系統自己創建后,組織數據以提升性能,如子查詢,臨時表在多個連接之間不能共享。這里只討論內存表

創建表是,用engine=heap可創建(mysql5.5中已經不支持type,以后都用engine,形成習慣)。

  1. create table test  
  2. (  
  3.     id int unsigned not null auto_increment primary key,  
  4.     state char(10),  
  5.     type char(20),  
  6.     date char(30)  
  7. )ENGINE=MEMORY DEFAULT CHARSET=utf8;  

內存表的特性

  1. 內存表的表定義是存放在磁盤上的,擴展名為.frm, 所以重啟不會丟失。
  2. 內存表的數據是存放在內存中的,所以重啟會丟失數據。
  3. 內存表使用一個固定的記錄長度格式。
  4. 內存表不支持BLOB或TEXT列,比如varchar與text字段就不會被支持。
  5. 內存表支持AUTO_INCREMENT列和對可包含NULL值的列的索引(網上大多說不支持,這是錯誤的)。內存表支持大于(>) 小于( <)操作,網上也說不支持。
  6. mysql重啟后,主鍵、自增、索引仍然存在,只是數據丟失。這也是對網上的一些錯誤文字糾正。
  7. 內存表表在所有客戶端之間共享(就像其它任何非TEMPORARY表)。
  8. MEMORY存儲引擎執行HASH和BTREE索引。你可以通過添加一個如下所示的USING子句為給定的索引指定一個或另一個:
  9. 內存表初始化,可以使用--init-file來初始化,避免重啟mysql后數據被清空。比如--init-file="/data/mysql/init.sql", init.sql格式為:
  10. 在數據庫復制時,如果主機當掉,則會在binLog中自動加入delete from [內存表],將slave的數據也刪除掉,以保證兩邊的數據一致性。
  11. 內存表不支持事務。
  12. 內存表是表鎖,當修改頻繁時,性能可能會下降。

內存表的使用

內存表使用哈希散列索引把數據保存在內存中,因此具有極快的速度,適合緩存中小型數據庫,但是使用上受到一些限制。

  1. heap對所有用戶的連接是可見的,這使得它非常適合做緩存。
  2. 僅適合使用的場合。heap不允許使用xxxTEXT和xxxBLOB數據類型。注:操作符 “<=>” 說明:NULL-safe equal.這個操作符和“=”操作符執行相同的比較操作,不過在兩個操作碼均為NULL時,其所得值為1而不為NULL,而當一個操作碼為NULL時,其所得值為0而不為NULL。
  3. 一旦服務器重啟,所有heap表數據丟失,但是heap表結構仍然存在,因為heap表結構是存放在實際數據庫路徑下的,不會自動刪除。重啟之后,heap將被清空,這時候對heap的查詢結果都是空的。
  4. 如果heap是復制的某數據表,則復制之后所有主鍵、索引、自增等格式將不復存在,需要重新添加主鍵和索引,如果需要的話。
  5. 對于重啟造成的數據丟失,有以下的解決辦法:
  •  在任何查詢之前,執行一次簡單的查詢,判斷heap表是否存在數據,如果不存在,則把數據重新寫入,或者DROP表重新復制某張表。這需要多做一次查詢。不過可以寫成include文件,在需要用該heap表的頁面隨時調用,比較方便。
  • 對于需要該heap表的頁面,在該頁面***次且僅在***次查詢該表時,對數據集結果進行判斷,如果結果為空,則需要重新寫入數據。這樣可以節省一次查詢。
  • 更好的辦法是在mysql每次重新啟動時自動寫入數據到heap,但是需要配置服務器,過程比較復雜,通用性受到限制。

小記錄,MyISAM與InnoDB互轉

  1. // InnoDB轉MyISAM  
  2. ALTER TABLE `tablename` ENGINE = MYISAM  
  3. // MyISAM轉InnoDB  
  4. alter table tablename type=innodb;  
  5. ALTER TABLE `tablename` ENGINE = InnoDB  

原文鏈接:http://www.nowamagic.net/librarys/veda/detail/1405

【編輯推薦】

  1. 利用Java進行MySql數據庫的導入和導出
  2. MySQL集群CGE電信運營商級版本
  3. MySQL 5.5.21 GA發布(附下載)
  4. MySQL體系結構詳解
  5. 超越MySQL 對流行數據庫進行分支
責任編輯:林師授 來源: nowamagic.net
相關推薦

2010-10-12 16:29:02

MySQL權限表

2010-11-22 16:51:10

MySQL內存表

2010-11-23 14:46:20

MySQL內存表

2009-06-16 11:11:07

Java內存管理Java內存泄漏

2013-07-19 13:16:26

iOS中BlockiOS開發學習內存管理

2010-11-24 13:18:05

MySQL表管理

2021-06-30 07:19:36

Netty簡單使用

2010-11-23 13:36:29

Mysql User表

2023-05-29 07:17:48

內存溢出場景

2011-06-22 13:27:04

QT QMap

2010-10-13 10:42:14

MySQL修改表結構

2010-04-26 09:28:43

Oracle數據庫

2011-06-28 11:27:19

java克隆對象

2010-04-30 16:01:17

2009-12-23 18:58:51

Fedora 7

2009-08-18 17:03:49

C#3.5新特性

2017-07-06 15:12:48

MySQLgtid特性數據恢復

2016-12-23 12:46:41

Linux命令進程與內存

2010-05-28 10:24:30

MySQL Event
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 狠狠入ady亚洲精品经典电影 | 精品国产乱码久久久久久闺蜜 | 北条麻妃一区二区三区在线观看 | 美女一级毛片 | 一区二区免费 | 久久久久无码国产精品一区 | 在线观看免费av网站 | 欧美日韩专区 | 亚洲精品成人av久久 | 亚洲精品乱码久久久久久久久 | 97国产一区二区 | 成人在线视频免费播放 | 亚洲一区二区视频 | 久久久久久久综合 | 91精品久久久久久久久久入口 | www,黄色,com| 亚洲精品欧美精品 | 国产精品高 | 亚洲午夜精品久久久久久app | 久久蜜桃精品 | 亚洲免费在线观看 | 久久九七| 亚洲图片一区二区三区 | 亚洲香蕉在线视频 | 大陆一级毛片免费视频观看 | 欧美.com | 1000部精品久久久久久久久 | 亚洲a视 | 国产精品视频播放 | 精品欧美乱码久久久久久 | 三级免费av | 久久久精品一区二区三区 | 中文字幕av网址 | 成人精品视频在线观看 | 2019天天操 | 久久久国产网站 | 国产精品久久久久9999鸭 | 欧美视频第二页 | 亚洲国产视频一区二区 | 一区二区三区四区毛片 | 成人片网址 |