MySQL在6.0中新增加了一个存储引擎falcon,中文翻译为猎鹰,这个存储引擎的开发显然和innodb被oracle收购相关,也许在不久的将来,falcon将会完全会替代innodb。
在 mysql5.0和5.1中,支持事务的存储引擎有两种,是innodb和NDB(mysql cluster)中使用,其中,ndb可以很容易得达到99.999%的可用性和超过10000 tps的高性能;而innodb主要应用在单服务器上或者是master/slave模式下。falcon和innodb在很多特性上类似,但是他们的架 构不同,特性上也有很多不同的地方,如下所示:

falcon和innodb的主要区别如下:

  1. falcon不使用cluster索引
  2. falcon不支持read uncommited 隔离级别
  3. falcon不支持语句级复制,这样是为了保证日志和数据文件的一致性。
  4. falcon支持表空间的概念,innodb只有数据文件概念,但是数据和索引表空间不能分开。
  5. falcon支持在线备份,不过备份工具要到6.1的时候才会发布。

falcon在6。0以后被支持,要想查看当前版本是否支持falcon,可以用如下命令:
mysql> show engines;
+------------+---------+----------------------------------------------------------------+--------------+-----+------------+
| Engine     | Support | Comment                                                        | Transactions | XA  | Savepoints |
+------------+---------+----------------------------------------------------------------+--------------+-----+------------+
| FEDERATED  | YES     | Federated MySQL storage engine                                 | NO           | NO  | NO         |
| MRG_MYISAM | YES     | Collection of identical MyISAM tables                          | NO           | NO  | NO         |
| CSV        | YES     | CSV storage engine                                             | NO           | NO  | NO         |
| Falcon     | YES     | Falcon storage engine                                          | YES          | NO  | YES        |
| BLACKHOLE  | YES     | /dev/null storage engine (anything you write to it disappears) | NO           | NO  | NO         |
| MEMORY     | YES     | Hash based, stored in memory, useful for temporary tables      | NO           | NO  | NO         |
| ARCHIVE    | YES     | Archive storage engine                                         | NO           | NO  | NO         |
| InnoDB     | YES     | Supports transactions, row-level locking, and foreign keys     | YES          | YES | YES        |
| MyISAM     | DEFAULT | Default engine as of MySQL 3.23 with great performance         | NO           | NO  | NO         |
+------------+---------+----------------------------------------------------------------+--------------+-----+------------+
9 rows in set (0.01 sec)

创建falcon的表很简单,和创建其他表一样:
mysql> CREATE TABLE tbl1 (id INTEGER AUTO_INCREMENT PRIMARY KEY, value VARCHAR(30)) ENGINE=Falcon;
Query OK, 0 rows affected (0.19 sec)

mysql> show create table tbl1;
+-------+---------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table                                                                                                                                                  |
+-------+---------------------------------------------------------------------------------------------------------------------------------------------------------------+
| tbl1  | CREATE TABLE `tbl1` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `value` varchar(30) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=Falcon DEFAULT CHARSET=latin1 |
+-------+---------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

当然,如果希望创建的表默认就是falcon存储引擎,可以在my.cnf中加入“default-storage-engine=Falcon”。
我们测试一下事务:
mysql> insert into tbl1 (value) values(1);
Query OK, 1 row affected (0.01 sec)

mysql> rollback;
Query OK, 0 rows affected (0.01 sec)

mysql> select * from tbl1;
Empty set (0.00 sec)

falcon的表空间管理:
对于一个falcon表的存储,涉及到了3个表空间的,分别是:

  • 一个未命名的表空间用来存储系统表。
  • falcon_user 用来存储表数据的默认位置
  • falcon_temporary 用来存储临时表

显然,我们刚刚创建的测试表tbl1应该位于falcon_user表空间,可以用相关的视图进行查看:
mysql> select * from FALCON_TABLES;
+-------------+------------+-----------+-------------+---------------+
| SCHEMA_NAME | TABLE_NAME | PARTITION | TABLESPACE  | INTERNAL_NAME |
+-------------+------------+-----------+-------------+---------------+
| TEST        | TBL1       |           | FALCON_USER | TBL1          |
+-------------+------------+-----------+-------------+---------------+

我们也可以创建自己的表空间,命令如下:
mysql> create tablespace tbs2 add datafile 'data02' engine=falcon;
Query OK, 0 rows affected (0.13 sec)

从系统表中可以查到所有的表空间:
mysql> select * from FALCON_TABLESPACES;
+------------------+------------------+---------+
| TABLESPACE_NAME  | TYPE             | COMMENT |
+------------------+------------------+---------+
| FALCON_USER      | FALCON_USER      |         |
| FALCON_TEMPORARY | FALCON_TEMPORARY |         |
| tb1              | USER_DEFINED     |         |
| tbs2             | USER_DEFINED     |         |
+------------------+------------------+---------+
4 rows in set (0.02 sec)

从操作系统上看,数据目录下多了一个data02的数据文件,size为16k。我们也可以在新的表空间上创建表,命令如下:
mysql> create table tbl2 (id int) tablespace tbs2  engine=falcon;
Query OK, 0 rows affected (0.06 sec)

系统表中定义如下:
mysql> select * from FALCON_TABLES;    
+-------------+------------+-----------+-------------+---------------+
| SCHEMA_NAME | TABLE_NAME | PARTITION | TABLESPACE  | INTERNAL_NAME |
+-------------+------------+-----------+-------------+---------------+
| TEST        | TBL1       |           | FALCON_USER | TBL1          |
| TEST        | TBL2       |           | tbs2        | TBL2          |
+-------------+------------+-----------+-------------+---------------+
2 rows in set (0.00 sec)

用alter table命令可以将表移到另外的表空间中,例如:
mysql> alter table tbl2 tablespace tb1;
Query OK, 0 rows affected (0.18 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> use information_schema 
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> select * from FALCON_TABLES;
+-------------+------------+-----------+-------------+---------------+
| SCHEMA_NAME | TABLE_NAME | PARTITION | TABLESPACE  | INTERNAL_NAME |
+-------------+------------+-----------+-------------+---------------+espace
| TEST        | TBL1       |           | FALCON_USER | TBL1          |
| TEST        | TBL2       |           | tb1         | TBL2          |
+-------------+------------+-----------+-------------+---------------+
2 rows in set (0.00 sec)

如果要增加数据文件,目前看似乎还没有实现,测试如下:
mysql> alter tablespace tb1 add datafile 'data01_1' engine=falcon;
ERROR 1178 (42000): The storage engine for the table doesn't support 
上述语句目前只有NDB存储引擎可以使用。

对于没有任何对象的表空间,可以用drop tablespace命令进行删除:
mysql> drop tablespace tbs2 engine=falcon;
Query OK, 0 rows affected (0.01 sec)
注意:这里一定要加上engine=falcon关键字,否则会报语法错误。
删除后,表空间相应的数据字典信息和数据文件都会被删除。

如果表空间不为空,删除的时候会进行非空提示:
mysql> drop tablespace tb1 engine=falcon;
ERROR 1671 (HY000): Tablespace 'tb1' not empty

待续

参考文档:
[url]http://dev.mysql.com/tech-resources/articles/falcon-in-depth.html[/url]
[url]http://dev.mysql.com/doc/refman/6.0/en/se-falcon.html[/url]

转载于:https://www.cnblogs.com/itcomputer/articles/4660954.html

falcon存储引擎入门(一)相关推荐

  1. GeoMesa-空间数据存储引擎入门学习手册

    GeoMesa-空间数据存储引擎 geomesa简介.架构体系.数据存储.spark等 第一部分:GeoMesa简介 GeoMesa是一款开源的基于分布式计算系统的⾯面向海海量量时空数据查询与分析的⼯ ...

  2. MySQL入门--设置存储引擎

    MySQL设置存储引擎 1)查询存储引擎 l  使用SELECT 确认会话存储引擎: SELECT @@default_storage_engine; l  确认每个表的存储引擎: ?  SHOW C ...

  3. mysql存储引擎处理_[MySql学习笔记] 四 存储引擎事务处理

    MySql有一个重要的特征,被称为Pluggable Storage Engine Architecture(可替换存储引擎构架).有两个重要的存储引擎:MyISAM 和 InnoDB .其中MyIS ...

  4. 第 3 章 MySQL 存储引擎简介

    3.1 MySQL 存储引擎概述 MyISAM存储引擎是MySQL默认的存储引擎,也是目前MySQL使用最为广泛的存储引擎之一.他的前身就是我们在MySQL发展历程中所提到的 ISAM,是ISAM的升 ...

  5. MySQL 架构组成—存储引擎

    博主QQ:819594300 博客地址:http://zpf666.blog.51cto.com/ 有什么疑问的朋友可以联系博主,博主会帮你们解答,谢谢支持! MySQL Server 系统架构 上图 ...

  6. MySQL内核:InnoDB存储引擎 卷1

    MySQL内核:InnoDB存储引擎卷1(MySQL领域Oracle ACE专家力作,众多MySQL Oracle ACE力捧,深入MySQL数据库内核源码分析,InnoDB内核开发与优化必备宝典) ...

  7. 史上最简单MySQL教程详解(进阶篇)之存储引擎介绍及默认引擎设置

    什么是存储引擎? MySQL存储引擎种类 MyISAM 引擎 InnoDB引擎 存储引擎操作 查看存储引擎 存储引擎的变更 修改默认引擎 什么是存储引擎? 与其他数据库例如Oracle 和SQL Se ...

  8. 浅谈 MySQL 的存储引擎(表类型)

    什么是MySql数据库 通常意义上,数据库也就是数据的集合,具体到计算机上数据库可以是存储器上一些文件的集合或者一些内存数据的集合. 我们通常说的MySql数据库,sql server数据库等等其实是 ...

  9. MySQL如何修改表的储存方式_修改mysql默认存储引擎的方法

    修改mysql默认存储引擎的方法,供大家学习参考. 先来了解一下mysql存储引擎: mysql服务器采用了模块化风格,各部分之间保持相对独立,尤其体现在存储架构上.存储引擎负责管理数据存储,以及my ...

最新文章

  1. Spring中配置DataSource数据源的几种选择
  2. 大庆东风中学高考成绩查询2021年,2021年大庆中考成绩和分数线什么时候公布(附查询入口)...
  3. 帆软报表(finereport) 复选框多值查询
  4. 通过100个单词掌握英语语法(十六) come
  5. LwIP 之一 源码目录文件详解及移植说明
  6. 【工具】Jupyter Notebook介绍
  7. 关于TCP协议的大部分,面试常问的几点都在这理里了
  8. 俞敏洪直播:最近读了不少关于苏东坡的书
  9. 【Kafka】kafka 0.10.0 isr 不为空 但是不一致 导致获取消费组异常
  10. web前端是什么?需要掌握什么技术?
  11. automake生成静态库文件_基于CocoaPods的组件化原理及私有库实践
  12. JavaScript文档对象模型DOM节点操作之创建和添加节点(5)
  13. C语言 AI智能,五子棋 人机对战,人人对战
  14. C++设计模式实现--职责链(Chain of Responsibility)模式
  15. Tableau实战 楼市降温分析(七)现期房销售额及累计增长
  16. 空间管理 - 碎片化问题及解决思路
  17. [Chatter] 架构设计是做甚么
  18. 一个男朋友写给女朋友的信!爆笑(真勇敢)
  19. 惠普彩色激光打印机CM1312送稿台卡纸不能消除解决办法
  20. Linux下vi进入一个文件后,按Esc+q无法退出编辑模式的解决办法。

热门文章

  1. 排序算法c语言和oc实现的,几种常用的排序算法,OC实现
  2. 一种基于FPGA硬件求解对数的简化方法
  3. Verilog语言设计增加延时的正确方法
  4. 数字万用表测量二极管、三极管
  5. ADC0832双通道实现AD电压转换
  6. CSDN 字体颜色表
  7. 看大神如何使用vue导出pdf
  8. LeetCode-数组-删除有序数组重复元素
  9. 初步学习TypeScript
  10. 【Python】Numpy扩充数组函数之repeat和tile用法