mysql的存储引擎和infobright引擎说明
目前,mysql自带很多引擎,innodb是我们常用的事务引擎,但还有其他很多引擎,先说明如下:
1. mysql自带引擎:MyISAM,Falcon,Merge,Memory,Federated,Archive,CSV,Blackhole,Cluster,EXAMPLE,Maria.
2. 其他商业引擎:InnoDB,BerkeleyDB,solidDB,NitroDB,Infobright,TukoDB
3. 社区贡献的引擎:PBXT,Revision Engine.
Infobright是基于专利技术的列式数据库,一个基于MySQL开发的开源数据仓库(Data Warehouse)软件,可作为MySQL的一个存储引擎来使用,SELECT查询与普通MySQL无区别。
一、几大优点:
1、高压缩比率,平均压缩比可达10:1。(经测试,我们的1500万条697M日志数据压缩比例为6:1,压缩后数据大小仅为114M)
2、列存储,即使数据量十分巨大,查询速度也很快。(经测试,一条在infobright中的复合查询要30秒,在mysql中要一分多)
3、不需要建索引,就避免了维护索引及索引随着数据膨胀的问题。把每列数据分块压缩存放,每块有知识网格节点记录块内的统计信息,代替索引,加速搜索。
4、单一台服务器可以高效地读写30T数据。具有可扩展性,这里是指对于同样的查询,当数据量是10T时,它耗费的时间不应该比1T数据量时慢太多,基本是一个数量级内。
注:实际上infobright取一条记录比mysql要慢很多,但它取100W条记录会比mysql快。所以比较适用于日志、或汇总的大量的数据。
二、infobright限制
1、不支持数据更新:社区版Infobright只能使用“LOAD DATA INFILE”的方式导入数据,不支持INSERT、UPDATE、DELETE
2、不支持高并发:只能支持10-18多个并发查询
rpm包方式安装infobright
1.安装rpm
下载地址:http://www.infobright.org/
2.安装inforbright
# rpm -ivh infobright-4.0.7-0-x86_64-ice.rpm --prefix=/data/infobright
#(此处我们可只写一级目录,如/data,会默认建立infobright-version-x86_64目录)
提示安装完成,执行./postconfig.sh
3、 提示到/data/infobright/infobright中,执行
# ./postconfig.sh
4.启动,关闭infobright
# /data/infobright/infobright/bin/mysqld_safe start/stop
5.查看进程
# ps -ef |grep mysql
infobright端口为5029
6.进入infobright
#/data/infobright/infobright/bin/mysql -u root -p
7.应用
CREATE TABLE `t0` (
`id` bigint(20) NOT NULL ,
`name` varchar(20) NOT NULL,
`age` int(3) NOT NULL
) ENGINE=BRIGHTHOUSE DEFAULT CHARSET=utf8;
注:使用的引擎是 BRIGHTHOUSE 主键,为空,自动递增...此引擎都不支持。
8.导入日志 使用 load data infile
基本语法:
load data [low_priority] [local] infile 'file_name txt' [replace | ignore]
into table tbl_name
[fields
[terminated by't']
[OPTIONALLY] enclosed by '']
[escaped by'\' ]]
[lines terminated by'n']
[ignore number lines]
[(col_name, )]
low_priority:那么MySQL将会等到没有其他人读这个表的时候,才把插入数据
replace和ignore:控制对现有的唯一键记录的重复的处理。如果你指定replace,新行将代替有相同的唯一键值的现有行。如果你指定ignore,跳过有唯一键的现有行的重复行的输入。如果你不指定任何一个选项,当找到重复键时,出现一个错误,并且文本文件的余下部分被忽略。
fields:关键字指定了文件字段的分割格式,
terminated by:是以什么字符作为分隔符
enclosed by:字段括起字符
lines:指定了每条记录的分隔符默认为'\n'即为换行符
一条比较完整的 load data infile
load data infile '/info.txt' ignore into table t0 character set gbk fields terminated by ',' enclosed by '"' lines terminated by '\n';
info.txt
1,"name1",2
2,"name2",3
参考:http://hunan.iteye.com/blog/752606
http://blog.csdn.net/liyanyun/article/details/8858093