当前位置:Gxlcms > 数据库问题 > Infobright数据库使用

Infobright数据库使用

时间:2021-07-01 10:21:17 帮助过:12人阅读

启动命令: /etc/init.d/mysqld-ib start # 停止命令: /etc/init.d/mysqld-ib stop

 

3、卸载, 难免会出问题,或者安装不满意、喜欢折腾

rpm -e infobright

 

  4、修改配置配置文件(brighthouse.ini):应用于生产环境
  • ServerMainHeapSize为IB所使用内存的最大值(不包括bh_loader),如果是专用DB服务器,可适当调大,保证在业务最高峰,系统swap交换不高即可。
  • LoaderMainHeapSize由于是列式存储,IB需要将多行数据各列数据组合后写入数据块,如果导入表的列数很多,字段很长,将该值调高,加快导入速率(导入前set autocommit=0,完成后commit+复原,可大幅提高导入效率)。
  • ControlMessages 为IB错误日志记录类型,实验环境设为4有利于排错,成熟的生产环境设为2或3即可。
  • KNFolder 为知识网格所在目录,通常情况下大小都很小,直接放在data目录下即可。
  • 根据自身的物理内存大小修改ServerMainHeapSize、ServerCompressedHeapSize,LoaderMainHeapSize的值,文件中已经给出样板。

 

四、使用Infobright

1.授权用户

使用 /etc/init.d/mysqld-ib start 启动Infobright后,在linux命令行使用 mysql-ib 指令就可以连接Infobright命令行连接窗口,默认本地root用户连接没有密码。

技术图片

 

在mysql命令窗口:指定远程连接的账户和密码设置:

--授权账户权限和密码 
grant all privileges on *.* to admin@% identified by 123456 with grant option;
--刷新权限
flush privileges;

完成后就可以使用本地的mysql客户端工具(navicat等)进行Infobright连接使用。提醒:使用服务器一定要记得防火墙,不然会导致连接不上;

 

2. 创建表 

在Infobright中创建数据库后,创建表:

CREATE TABLE `user_log` (
  `id` bigint(20) DEFAULT NULL,
  `visit_name` char(15) DEFAULT NULL,
  `vistit_ip` bigint(20) DEFAULT NULL,
  `user_sex` tinyint(4) DEFAULT NULL,
  `user_province` tinyint(4) DEFAULT NULL,
  `user_area` tinyint(4) DEFAULT NULL,
  `visit_path` char(100) DEFAULT NULL,
  `visit_module` tinyint(4) DEFAULT NULL,
  `visit_function` char(50) DEFAULT NULL,
  `visit_day` tinyint(4) DEFAULT NULL,
  `visit_count` int(11) DEFAULT NULL,
  `visit_time` int(11) DEFAULT NULL
) ENGINE=BRIGHTHOUSE DEFAULT CHARSET=utf8;

 

从本地Mysql的user_log中导出1000万条日志记录:

SELECT * FROM user_log INTO OUTFILE D:\\Template\\user_log.csv FIELDS TERMINATED BY , OPTIONALLY ENCLOSED BY " LINES TERMINATED BY "\r\n";

 注意:从mysql导出数据时,需要设置mysql导出的安全路径,在my.ini中mysqld下指定,secure_file_priv=导出的路径

技术图片

导出的 user_log.csv 文件大小为 1.2G多

 

 

3.导入数据到Infobright中

load data infile /app/document/user_log.csv into table user_log FIELDS TERMINATED BY , OPTIONALLY ENCLOSED BY " LINES TERMINATED BY "\r\n";

导入时间为: Query OK, 10000000 rows affected (55.01 sec)

导入后,查询Infobright数据库存储目录的大小:只有60M,压缩比惊人!

 

4.查询对比

select visit_name, count(*) from user_log group by visit_name;

本地 mysql user_log,1000万记录分组用时:首次17秒多,第二次17秒多

虚拟机 Infobright user_log,1000万记录分组查询:首次7秒多,第二次4秒多一点

 

五、注意事项-数据类型

Infobright里面支持所有的MySQL原有的数据类型。其中Integer类型比其他数据类型更加高效。尽可能使用以下的数据类型:

TINYINT,SMALLINT,MEDIUMINT,INT,BIGINT DECIMAL(尽量减少小数点位数) DATE ,TIME 效率比较低的、不推荐使用的数据类型有: BINARY VARBINARY FLOAT DOUBLE VARCHAR TINYTEXT TEXT  

Infobright数据类型使用的一些经验和注意点:

(1)Infobright的数值类型的范围和MySQL有点不一样,比如Infobright的Int的最小值是-2147483647,而MySQl的Int最小值应该是-2147483648。其他的数值类型都存在这样的问题。

(2)能够使用小数据类型就使用小数据类型,比如能够使用SMALLINT就不适用INT,这一点上Infobright和MySQL保持一致。

(3)避免效率低的数据类型,像TEXT之类能不用就不用,像FLOAT尽量用DECIMAL代替,但是需要权衡毕竟DECIMAL会损失精度。

(4)尽量少用VARCHAR,在MySQL里面动态的Varchar性能就不强,所以尽量避免VARCHAR。如果适合的话可以选择把VARCHAR改成CHAR存储甚至转成INTEGER类型。VARCHAR的优势在于分配空间的长度可变,既然Infobright具有那么优秀的压缩性能,个人认为完全可以把VARCHAR转成CHAR。CHAR会具有更好的查询和压缩性能。

(5)能够使用INT的情况尽量使用INT,很多时候甚至可以把一些CHAR类型的数据往整型转化。比如搜索日志里面的客户永久id、客户id等等数据就可以用BIGINT存储而不用CHAR存储。其实把时间分割成year、month、day三列存储也是很好的选择。在我能见到的系统里面时间基本上是使用频率最高的字段,提高时间字段的查询性能显然是非常重要的。当然这个还是要根据系统的具体情况,做数据分析时有时候很需要MySQL的那些时间函数。

(6)varchar和char字段还可以使用comment lookup,comment lookup能够显著地提高压缩比率和查询性能。

 

 六、使用总结

Infobright安装和使用都比较简单,存储压缩比惊人(压缩了20多倍),查询快(1000万记录分组查询快3~4倍,这里使用的虚拟机,使用真实机器应该更快)。

强大:单机便可存储大量数据,同时能满足对这些数据进行检索!

缺点:

  1)不能做更新操作,于是只能做存储固定形式的数据。

  2)只能支持10个左右并发,不能存储需要大量频繁访问的数据。

  3)由于只能靠自带的 load data infile 方式导入数据,因而需要编写脚本从源数据库进行数据同步导入操作。

 

 

参考文章:不分先后

  • https://baike.baidu.com/item/infobright/9823672?fr=aladdin
  • http://www.manongjc.com/article/32075.html
  • https://blog.csdn.net/hguisu/article/details/11848411
 

Infobright数据库使用

标签:nes   bsp   rmi   sage   tps   不能   app   数量级   目录   

人气教程排行