技术开发 频道

主流列式数据库评测之Infobright

  二、数据库的功能

  数据库的基本功能有CRUD(表的创建、插入、更新、删除)等方面,下面我们逐个测试。

  Infobright文档指出了它支持的数据类型和取值范围为:

  Numeric Types Min Value Max Value

  TINYINT -127 127

  BOOL, BOOLEAN -127 127

  SMALLINT -32767 32767

  MEDIUMINT -8388608 8388607

  INT -2147483647 2147483647

  BIGINT -9223372036854775806 9223372036854775806

  FLOAT -3.402823466E+38 3.402823466E+38

  DOUBLE (DOUBLE PRECISION) -1.7976931348623157E+308 1.7976931348623157E+308

  DEC (M,D) -(1.0E+M - 1)/(1.0E+D) (1.0E+M - 1)/(1.0E+D)

  WHERE 0

  Date and Time Types Min Value Max Value Format

  DATE 100-01-01 9999-12-31 YYYY-mm-dd

  DATETIME 100-01-01 00:00:00 9999-12-31 23:59:59 YYYY-mm-dd HH:MM:SS

  TIMESTAMP 1970-01-01 00:00:00 2038-01-01 00:59:59 YYYY-mm-dd HH:MM:SS

  TIME -838:59:59 838:59:59 HHH:MM:SS

  YEAR (4-digit format only) 1901 2155 YYYY

  String Types Max Value

  CHAR(N) 255

  VARCHAR(N) 65532

  BINARY(N) 255

  VARBINARY(N) 65532

  TINYTEXT 255

  TEXT(N) 65535

  我们可以发现,精确的数值类型DEC最大长度是18位,这实际上存储的是8字节长整型数,通过与小数位数的设定配合表达一个精确的小数,如果需要更大的数据范围,而精度要求可以降低,则可以用DOUBLE数据类型。

  下一步是插入数据,企业版数据加载还采用MySQL的load data infile命令。默认的加载程序是MySQL原始的工具,不过你可以通过修改环境变量实现用infobright的加载程序,后者性能更高,参见下一节测试的结果。

  对于比较规律的测试数据,可以通过存储过程产生,语法规则和MySQL的一致,由于brighthouse引擎的DML速度比较慢,同样需要设置自动提交开关为关闭,方能取得较好的插入性能。

DELIMITER |

  CREATE PROCEDURE `test`.`insert_1K`

  ( )

  BEGIN

  DECLARE v
INT;

  
SET v = 1;

  loop_label:
LOOP

  INSERT INTO t VALUES (
mod(v,4),mod(v,5),mod(v,67),mod(case when mod(v,13)>0 then v end ,113),v);

  
SET v = v + 1;

  
IF v > 1000 THEN

  LEAVE loop_label;

  
END IF;

  
END LOOP;

  
END |

  mysql
> set autocommit=on;

  Query OK,
0 rows affected (0.00 sec)

  mysql
> call insert_1K_ ();

  Query OK,
1 row affected (33.94 sec)

  mysql
> truncate table t;

  Query OK,
0 rows affected (0.00 sec)

  mysql
> set autocommit=off;

  Query OK,
0 rows affected (0.00 sec)

  mysql
> call insert_1K ();

  Query OK,
1 row affected (0.08 sec)

  mysql
> select count(*) from t;

  
+----------+

  | count(
*) |

  
+----------+

  |
1000 |

  
+----------+

  
1 row in set (0.03 sec)

  mysql
> commit;

  Query OK,
0 rows affected (0.02 sec)

  Infobright支持中文,不过需要做一些设置。

mysql> set names gbk;

  Query OK,
0 rows affected (0.00 sec)

  mysql
> create table thz(a varchar(100))DEFAULT CHARSET=gbk;

  Query OK,
0 rows affected (0.00 sec)

  mysql
> show create table thz;

  
+-------+--------------------

  | thz | CREATE TABLE `thz` (

  `a` varchar(
100) DEFAULT NULL

  ) ENGINE
=BRIGHTHOUSE DEFAULT CHARSET=gbk

  
1 row in set (0.00 sec)

  mysql
> insert into thz values('入门');

  Query OK,
1 row affected (0.00 sec)

  mysql
> insert into thz values('文献');

  Query OK,
1 row affected (0.00 sec)

  mysql
> select * from thz order by 1;

  
+------+

  | a |

  
+------+

  | 入门 |

  | 文献 |

  
+------+

  
2 rows in set (0.06 sec)

  mysql
> select * from thz order by 1 desc;

  
+------+

  | a |

  
+------+

  | 文献 |

  | 入门 |

  
+------+

  
2 rows in set (0.00 sec)
0
相关文章