设为首页 加入收藏

TOP

Mysql地毯式由浅入深学习(一)――Mysql的整体架构简介(二)
2015-11-21 01:51:16 来源: 作者: 【 】 浏览:1
Tags:Mysql 地毯 由浅入深 学习 整体 架构 简介
事务读取到的行在事务开始之前未被删除
只有符合上述两个条件的才会被查询出来
INSERT
InnoDB为新插入的每一行保存当前系统版本号作为行版本号
DELETE
InnoDB为删除的每一行保存当前系统版本号作为行删除标识
UPDATE
InnoDB为插入的一行新纪录保存当前系统版本号作为行版本号,同时保存当前系统版本号到原来的行作为删除标识
保存这两个版本号使大多数操作都不用加锁。使数据操作简单,性能很好,并且能保证只会读取到复合要求的行。不足之处是每行记录都需要额外的存储空间,需要做更多的行检查工作和一些额外的维护工作。
MVCC只在REPEATABLE READ和COMMITTED READ
6、Mysql的存储引擎
6.1 InnoDB存储引擎
数据存储在表空间,表空间是由InnoDB管理的一个黑盒子,由一系列数据文件组成,在Mysql4.1以后版本,InnoDB可以将表的数据和索引放在单独的文件中。
InnoDB采用MVCC来支持高并发,默认隔离级别是REPEATEABLE READ,并且通过间隙锁(nex-key locking)策略防止幻读的出现,使得InnoDB不仅仅锁定查询涉及的行还会对索引中的间隙进行锁定,防止幻影行的插入。
InnoDB基于聚簇索引建立,对主键查询有很高的性能,不过他的二级索引(非主键索引)必须能包含主键列,如果主键列很大的话其他的所有索引都会很大。因此如果索引较多的话主键当尽可能的小。
6.2 Myisam存储引擎
Myisam会将表存储在两个文件中:数据文件和索引文件,可存储的行记录数一般受限于可用的磁盘空间或者操作系统中单个文件的最大尺寸。
特性:
1、加锁与并发
对整张表加锁,读取时会对需要读到的所有表加共享锁,写入时则对表加排他锁
2、修复
Mysql可用手工或自动执行检查和修复操作,但不同于事务回复及崩溃修复。执行表的修复可能导致一些数据丢失,而且修复操作非常慢。
3、索引特性
即使是BLOB和TEXT等长字段也可以基于其前500个字符创建索引。也支持全文索引,这是一种基于分词创建的索引
大数据量
当我们创建或者管理很多InnoDB数据的数据量在3~5TB之间或者更大,这是但台机器的量不是一个分片(shard),这些系统运行得还不错。如果数据量继续增长到10TB可能需要建立数据仓库,Infobright是Mysql数据仓库最成功的解决方案。
转换表的存储引擎:
1、alter table mytable engine = InnoDB;执行时间长,消耗I/O能力,同时会在原表上加锁,将会失去原引擎相关的所有特性,例如:如果将一张InnoDB表转换为Myisam再转回去,原InnoDB表上所有的外键将丢失。
2、导出与导入
使用mysqldump工具将数据导出到文件,然后修改文件create table语句的存储引擎选项,同时修改表名,因为同一个数据库中不能存在相同的表名,即使使用不同的存储引擎。
3、创建与查询
综合上述两种方法的高效和安全,不需要导出整个表的数据,而是先创建一个新的存储引擎表。然后利用insert … select语法来到数据
create table innodb_table like myisam_table;
alter table innodb_table engine=InnoDB;
insert into innodb_table select * from myisam_table;
数据量大考虑分批处理
start transaction;
insert into innodb_table select * from myisam_table where id between x and y;
commit;

首页 上一页 1 2 下一页 尾页 2/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇mysql主从不同步处理--数据库初始.. 下一篇mysql学习笔记之三(索引)

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: