2011年(10)
分类: Mysql/postgreSQL
2011-09-12 11:41:06
brighthouse.ini配置文件
------------------------------------------------
ServerMainHeapSize
IB主要使用的内存大小,通常取系统自动生成值即可,但遇到特殊的应用场景,可进行调整,避免出现swap交换
LoaderMainHeapSize
当遇到列数很多的表据时(1000列),适当调大;
长文本字段,适当调大;
CacheFolder
临时文件的路径,可以和data目录放在不同的IO上,适当分担压力
AllowMySQLQueryPath
设置为0禁止,infobright无法优化的查询也不会使用Mysql进行优化。
KNFolder
知识网格的存储地址,默认是在数据文件同目录下,约占数据文件容量的1%
ControlMessages
IB自身bh.err日志记录的详细度
IB支持与配置信息
------------------------------------------------
查询版本
/usr/local/infobright/bin/mysqld --version
show variables like '%version%';
查询默认存储引擎
show engines;
支持的数据类型和范围
支持的DDL操作
alter table
rename,add column,drop column,
列定义 Comment选项
----------------------------
for lookup
对于长varchar和char字段,增加lookup定义后,ib会自动将文本内容映射到一固定数字,查询时提高性能并减少解压操作。但该列必须满足一下条件:
1.文本没有大小写区分;
2.有大量的重复数据,生成的数字映射会全部加载到内存中,所以要考量非重复数据数量select count(distince column) from table;并且该列的压缩比要大于10,show full column from table;查看comment中的压缩比
语法
create table
(name varchar(32) comment 'lookup'
)engine=brighthouse;
-------------------------------------------------
for insert
Infobright提供了对列的附加调整,可以帮助优化insert操作的性能。被定义为for insert的列会将数据块保持未压缩状态,来实现更快的数据插入,提高autocommit开启情况下,1.大量的单条insert,2.小频率load(小于10000行)的性能。
如果你需要进行上述的两种操作,最好将for_insert定义在字符列和大数字列上;小叔子列的压缩和解压过程很快,所以对其并不会提高明显的性能。而对以已经定义为lookup的列,for insert能提高的性能也很少。
另外,如果你的磁盘空间很有限,请不要使用这个定义,来最大化的减少磁盘空间的消耗。
create table
(name varchar(32) comment 'for_insert'
)engine=brighthouse;
-----------------------------------------------------
不支持的列选项
1.默认值
2.主键外键
3.unsigned
不支持的索引
key
index
unique
aoto_increment
查看表格信息
SHOW [FULL] COLUMNS FROM tbl_name [FROM db_name] [LIKE ‘pattern’];
SHOW CREATE TABLE tbl_name;
SHOW TABLE STATUS [FROM db_name] [LIKE ‘pattern’];
查看压缩比统计
压缩比统计compression ratio是ib特殊提供的信息,它根据未压缩前数据(表或列)的自然大小来进行比较。
压缩比是在数据插入时生成的,如果进行了DML操作,并不会更新。
压缩比计算出的数据大小通常比实际磁盘占用要小,因为还需要保存知识网格等数据。
说明:1.标记为not null的列会多消耗1bit,对与null的每个值
2.date列的自然大小计算,是按照实际保存的varchar字段进行的。
数据类型的自然大小大约的等于二进制导入导出的格式。
A查看表格的压缩比
show table status from test like 'large'\G
B查看列的压缩比
show full columns for large.....\G
-----------------------------------
字符集支持
Ib提供所有的ansi和utf8支持。
使用utf8字符集的性能会比asc2满。因为知识网格暂时不支持utf8,会在将来的版本中完善。
---------------------------------
导入导出数据
三种方式:
1.Insert
2.mysql loader
3.ib loader
Ibloader
速度更快,更少的健壮性,严格的文件格式要求(文本或二进制),更少的错误容忍性
MySqlloader
速度较慢,更好的健壮性,宽松的导入文件支持(包含变长数据)
Insert
支持几乎所有的ETL工具
速度很快,并取决于处理和commit频率
如果使用ETL工具,最好是采用ib loader和二进制格式。