澳门金沙vip 5

mysql 开发基础系列11 存储引擎memory和merge介绍

一. memory存款和储蓄引擎

  memoery存款和储蓄引擎是在内部存款和储蓄器中来创设表,各个memory表只实际对应多少个磁盘文件格式是.frm. 
 该外燃机的表访谈特别得快,因为数量是位于内存中,且暗许是hash索引,但服务关闭,表中的数额就可以遗弃掉。 
     

-- 下面创建一个memory表,并从city表获得记录
CREATE TABLE tab_memory ENGINE=MEMORY
SELECT city_id,country_id FROM city GROUP BY city_id

澳门金沙vip 1

-- 给momory 表创建索引时,可以指定是hash索引还是btree索引
CREATE INDEX mem_hash USING HASH ON tab_memory(city_id);
SHOW INDEX FROM tab_memory

澳门金沙vip 2

DROP INDEX mem_hash ON tab_memory;
CREATE INDEX mem_hash USING BTREE ON tab_memory(city_id)
SHOW INDEX FROM tab_memory

澳门金沙vip 3

  计算:服务器须求丰硕的内存来维护有着在同期使用的memory表,当不再必要时,要释放,应推行delete from 或 truncate table 或删除表drop table。
  各样memory表放置的数据量大小,受到max_heap_table_size系统变量的牢笼,最初值是16MB.
通过max_rows 子句钦定表的最大行数。
  memory类型 通常选拔于有时表,如总结操作的中游结果表。

概述

mysql5.5此前暗中同意存款和储蓄引擎是MyISAM,5.5以后改为InnoDB。若要修改默许引擎,能够修改配置文件中的default-storage-engine。能够由此show engines来查看当前数据库帮衬的引擎。使用select engine from information_schema.engines where transactions = 'yes';来查阅哪些引擎补助专门的学问。在成立表到时候通过engine=...或type=...来钦命所要使用到引擎。

二. merge 存款和储蓄引擎 

  merge
引擎是一组MyISAM表的整合,那些MYISAM表必得结构完全同样,merge表本人并不曾多少,对表的增加和删除改查
实际是对里面包车型大巴myisam表进行操作。
对于merge类型表的插入操作有三种档案的次序:first是插入在首先个表,last是插入到最后一个表,不定义或为NO表示不能够对merge表实施插入操作,对于merge表的drop操作,内部的表未有其他影响。merge
在磁盘上保留四个文本,二个是.frm文件存款和储蓄表定义,另三个是.mrg文件饱含组合表的音讯。

-- 下面来测试下,创建三个结构相同的表 payment_2006,payment_2007,payment_all(merge类型)。
CREATE TABLE payment_2006(
 country_id SMALLINT,
 payment_date DATETIME,
 amount DECIMAL(15,2),
 KEY inx_fx_country_id (country_id)
)ENGINE =MYISAM

CREATE TABLE payment_2007(
 country_id SMALLINT,
 payment_date DATETIME,
 amount DECIMAL(15,2),
 KEY inx_fx_country_id (country_id)
)ENGINE =MYISAM

CREATE TABLE payment_all(
 country_id SMALLINT,
 payment_date DATETIME,
 amount DECIMAL(15,2),
 INDEX  (country_id)
)ENGINE =MERGE UNION=(payment_2006,payment_2007) INSERT_METHOD=LAST;

-- 分别向payment_2006和payment_2007表插入数据
INSERT INTO payment_2006 VALUES(1,'2006-05-01',100000),(2,'2006-08-01',150000);
INSERT INTO payment_2007 VALUES(1,'2007-05-01',200000),(2,'2007-08-01',350000);

-- 查询payment_all
SELECT * FROM payment_all; 

  下图开掘该paymnet_all表合併了二表的结果集:

澳门金沙vip 4

-- 下面向payment_all表插入数据 表定义是INSERT_METHOD=LAST;
INSERT INTO payment_all VALUES(3,'2006-05-01',112000);
-- 查询
SELECT * FROM payment_2007;

澳门金沙vip 5

  总括:
ME普拉多GE表并不可能智能地将记录写到对应的表中,而分区表是能够的,经常我们利用merge表来透明地对四个表举行询问和换代操作。

MyISAM

  1. 它不扶助职业,也不扶持外键,其优势是拜望的快慢快,对业务完整性未有须求的依然以select/insert为主的采纳基本上能够选拔这些引擎来创制表。

  2. 每一个MyISAM在磁盘上都有3个文件,其文件名都与表名一样,但扩展名是:

    • .frm(表定义)
    • .MYD(MYDate:存款和储蓄数据)
    • .MYI(MYIndex:存款和储蓄索引)
  3. .MYD文件和.MYI文件能够停放在分化的目录中,通过 data directory
    和index directory语句钦定。

  4. MyISAM类型的表可能会破坏,能够运用CHECK
    TABLE语句来检查MyISAM表的例行,并用REPAIR
    TABLE语句修复贰个破坏到MyISAM表。

  5. MyISAM协助3种分化的蕴藏格式:

    • 静态(固定长度)表
    • 动态表
    • 压缩表

    在静态表中,如若供给保留的原委后边本来就隐含空格,那么在回到结果的时候会去掉公共的。

    在动态表中,记录不定点,优点是挤占空间相对很少,劣点是频仍的翻新和删除记录会发生碎片,须要定期实践optimize
    table 来创新品质。

    在压缩表中,由myisampack工具成立,占有非常的小的磁盘空间。因为各样记录都被单独压缩的。

三..怎样选拔妥帖的储存引擎  

  myisam:
假设选取是以读操作和插入操作为主,唯有非常少的更新和删除操作,并且对作业的完整性,并发性供给不是非常高,举例数据存款和储蓄。

  innodb:
用于事务管理应用程序,帮衬外键,对职业的完整性较高,并发条件下数据一致性,包蕴广大的翻新和删除操作,它能幸免删除和立异导致的锁定,还提供了付出和回滚,比如计算开销对数码精确性供给高的。

  memory:
数据保存在ram(内部存款和储蓄器)中,访谈速度快,但对表的大大小小有限量,要力保数量是能够复苏的,常用于立异不太频仍的小表,用以神速访谈。

  merge:
它是myisam表以逻辑方式结合的内燃机,将myisam表分布在多少个磁盘上,能够有效创新merge表的探问功效。比方数据存款和储蓄等。

 

InnoDB

  1. InnoDB援助工作安全澳门金沙vip,,比较MyISAM引擎,InnoDB写的频率差点,并且会占用越多的磁盘空间。
  2. InnoDB自动增加列能够手工业插入,然则插入的值是空或许0,则实在插入的将是半自动增进后的值。能够运用last_insert_id()询问当前线程最后插入记录使用的值。能够通过alert table *** auto_increment=n;语句强制安装自动增加值。
  3. 对于InnoDB表,自动增进列必得是索引。要是是整合索引,也必须是结合索引的率先列,但是对于MyISAM表,自动增加列能够是构成索引的其余列,这样插入记录后,自动拉长列是依照组合索引到前面几列排序后递增的。
  4. MySQL支持外键的储存引擎唯有InnoDB,在开创外键的时候,父表必得有对应的目录,子表在创制外键的时候也会活动创造对应的目录。在创建索引的时候,能够钦赐在剔除、更新父表时,对子表举行的呼应操作,包蕴restrict、cascade、set null和no action。个中restrict和no
    action同样,是指限制在子表有关系的情状下,父表无法立异;casecade表示父表在更新或删除时,更新也许去除子表对应的笔录;set
    null 则意味着父表在更新或然去除的时候,子表对应的字段被set
    null。当有些表被其余表制造了外键参照,那么该表对应的目录或主键被取缔删除。能够采纳set foreign_key_checks=0;一时关闭外键约束,set foreign_key_checks=1;开发约束。
  5. InnoDB存款和储蓄表和目录有如下三种形式:
    • 行使共享表空间存款和储蓄。
    • 选取多表空间存款和储蓄。