浅析Gigabase数据库查询优化的设计与实现
摘 要:介绍了Gigabase数据库的特点及查询语言,详细讨论了Gigabase数据库中查询优化的具体实现。
关键字:Gigabase、查询优化、指针、反向指针、并行查询Implementation of Query Optimization In Gigabase
Wangxingfang
(Jinan University GuangZhou 510630)
Abstract : Introduce the features of Gigabase and discuss the implementation of query optimization in Gigabase in details.
Keys: Gigabase、query optimization、references 、Inverse references、parallel query
1.引言
现 在许多大型的数据库系统在传统的关系型数据库理论基础上揉和了一些面向对象的特征,结合关系数据库和面向对象数据库的优点,使其可以处理复杂数据类型、提 供功能强大的查询语言及高保护性。Gigabase就是一个建立在关系模型之上的面向对象的对象—关系数据库,它支持结构、数组、字符串及指针等复杂的数 据类型,能够处理复杂的一对多、多对多的关系,提供了功能强大的查询语言及高速的查询功能,而且提供了方便灵活的接口。另外,Gigabase最优越的一 点还在于:数据库可以作为一个文件进行复制,而不需进行数据库的安装及复杂的配置。正是基于以上优点,目前Gigabase在许多应用领域都很受欢迎。
2.查询语言(Query Language)
Gigabase支持类SQL语法的查询语句,它为面向对象的编程和相关的数据库提供了更普遍的使用符号。与SQL语句不同的是,Gigabase的查询语句面向的是对象的工作,所以,每个查询的结果是一个类的一个对象集。Gigabase中的查询语句和标准的SQL语句之间的的显著不同是:
l 没有几个表之间的连接(join)和嵌套子查询,查询从一张表中返回一个对象集。
l 结构和数组能够被用作记录成员。exists保留字用来为数组中的元素定位。
l 既能为记录(对象)也能为记录成员定义用户方法。
l 支持对象之间的指针包括自动支持反向指针(Inverse Reference)。
虽 然Gigabase没有几个表之间的连接(join)和嵌套子查询,但它可以通过适当的查询语句来实现类似的功能,如下面定义了三个结构:Detail 、Supplier 、Shipment ,如果想得到某些供应商提供的某些具体货物的交货时间,那么在关系数据库中,实现此功能需查询语句为:
select from Supplier,Shipment,Detail where
Supplier.SID = Shipment.SID and Shipment.DID = Detail.DID
and Supplier.company like ? and Supplier.address like ?
and Detail.name like ?
而GigaBASE中通过dbQuery查询语句来实现;
dbQuery q = "detail.name like",name,"and supplier.company like",company,
"and supplier.address like",address,"order by price";
三个结构Detail 、Supplier 、Shipment的声明:
struct Detail {
char const* name;
double weight;
TYPE_DESCRIPTOR((KEY(name, INDEXED), FIELD(weight)));
};
struct Supplier {
char const* company;
char const* address;
TYPE_DESCRIPTOR((KEY(company, INDEXED), FIELD(address)));
};
struct Shipment {
dbReference<Detail> detail;
dbReference<Supplier> supplier;
int4 price;
int4 quantity;
dbDateTime delivery;
TYPE_DESCRIPTOR((KEY(detail, HASHED), KEY(supplier, HASHED),
FIELD(price), FIELD(quantity), FIELD(delivery)));
};
千万级的数据(mysql),统计分析,非常慢,怎么优化
千万级的数据(mysql),统计分析,非常慢,怎么优化
关于mysql千万数据做查询优化
新人小菜鸟一枚,当时建表的时候也没有想到这些。现在java程序一直在跑,往数据库插入数据(每一秒插入一条甚至多条数据)。几十万条的时候还没什么感觉,最近做查询的时候,顿时SB了,做一次查询要崩溃。。。现在想请教有没有专业DBA大大,可以给个建议,怎么做优化,数据库是建在linux服务器上的。昨天了解了下infobright,可是它不能插入数据,然后kdb+好像百度上不多,所以自己也不懂。。现在请教下,怎么能够解决这个查询速度了。。在线等,有建议的帮忙下,谢谢啊
大家都在问
第一 从你的操作代码。是否可优化 第二 sql优化。例如,索引,或者sql语句优化等到。。
大家都在问
无论什么数据库,大的方面都是这三种吧:1,数据库配置优化 2,数据库建表时字段设置优化以及字段属性的设置要最合适。3,sql查询语句优化。