技术开发 频道

主流行式数据库评测之开源MySQL5.5版本

  二、MySQL功能简介

  由于MySQL是非常流行的免费数据库管理系统,介绍它的资料也非常多,这里不准备罗列MySQL的功能,仅介绍和我们测试有关的几项功能。

  1.创建数据库

  MySQL的数据库实际上对应磁盘上一个目录,该目录下的.frm文件保存所有表的定义,而数据存储则随存储引擎的不同而不同,myisam的数据文件保存在同一个目录下,一个非分区表一个.myd数据文件,索引则存储在.myi后缀的文件中,如果是每个表独立存储的innodb引擎,每个表的数据和索引保存在一个与表同名的.ibd文件中,如果是共享存储的innodb引擎,所有数据库的innodb表和索引保存在一个.ibd数据文件中。

  2.数据引擎

  MySQL一个区别于其他数据库的特色功能就是可插拔式存储引擎。前面介绍了2种主要的存储引擎,myisam和innodb,前一个是mysql自有的,它不支持事务,因此也没有提交和回滚操作,不太能满足数据库的ACID的要求,一般只用于对数据库完整性要求不太高的场合和mysql系统表。Innodb原本是第3方的Innodb公司开发的,一度因版权原因退出MySQL的发行包,转而以插件形式提供,在经历多次并购以后,现在卷土重来成为了MySQL的默认存储引擎,它支持事务和外键约束,更符合ACID的要求,可以满足大部分业务需求。还有其他数据引擎,比如memory和csv,它们的使用都不如上述2种广泛,具体使用方法参考文档。数据库引擎和表一一对应,同一个数据库允许不同的表采用不同的引擎,但这些表之间的互访问性有所不同,比如:假如2个表存在外键引用关系,则2表必须都是innodb引擎。为了得到较好的执行计划,尽量在一个查询中涉及的表采用同一种引擎。

  三、TPCH测试

  和前几次测试一样,主要测试数据加载和查询性能,也对数据压缩进行测试。

  1.准备工作

  mysql是MySQL提供的命令行工具,它包括单行命令方式和交互方式。

  mysql常用的命令行参数选项如下:

  mysql -u 用户名 -p 口令 数据库名

  构造测试环境,首先建立一个名为tpch的数据库,并设置它为当前数据库。然后执行创建表的脚本。需要注意将脚本中的表名统一为小写字符,因为tpc-h生成的查询语句中的表名都是小写,并检查一下表的存储引擎是否如所预期的,若不是,需要制定默认存储引擎。

mysql> create database tpch;
Query OK,
1 row affected (0.00 sec)

mysql
> use tpch;
Database changed
mysql
> create table nation  ( n_nationkey  integer not null,
    
->                             n_name       char(25) not null,
    
->                             n_regionkey  integer not null,
    
->                             n_comment    varchar(152));
Query OK,
0 rows affected (0.00 sec)

mysql
>
mysql
> create table region  ( r_regionkey  integer not null,
    
->                             r_name       char(25) not null,
    
->                             r_comment    varchar(152));
Query OK,
0 rows affected (0.00 sec)

mysql
> create table t(a int);
Query OK,
0 rows affected (0.00 sec)

mysql
> show create table t;
+----------------------------------------------
CREATE TABLE `t` (
  `a`
int(11) DEFAULT NULL
) ENGINE
=MyISAM DEFAULT CHARSET=latin1
+----------------------------------------------
1 row in set (0.00 sec)

mysql
> set storage_engine=innodb
    
-> ;
Query OK,
0 rows affected (0.00 sec)
0
相关文章