用IBExpert优化Firebird/Interbase技巧集
IBExpert 如何改善Firebird/Interbase数据库 的解决方案 1.如何找到没使用索引的procedures, trigger和views 2.如何找到procedures和triggers中典型的类型转换问题 3.如何了解你的数据库服务器的垃圾回收功能是否工作 4.如何改变一个数据库中所有表的字符集 5.如何比较不同数据库元信息的异同并得到一个差异脚本 6.如何对存储过程及触发器进行版本管理 7.如何比较当前数据库与另一个数据库的对象 8.如何自动创建insert、update、delete或其它操作的sql语句 9.如何找到所有对当前对象有依赖关系的对象 10.如何比较不同硬件环境和数据库服务器的处理速度 下面是IBExpert Team的解决方案 1.如何找到没使用索引的procedures, trigger和views 只需选择菜单"tools"下的"SP/Trigger/View Analyzer",然后按F9(Start Analyzing)。就会分析所有对象并以红色标记没使用索引的部分。只需双击对应行就可以修改这些对象。一个设计良好的数据库分析结果中应该没有红色标记的行。 2.如何找到procedures和triggers中典型的类型转换问题 一个典型的问题就是经常较难发现一个varchar(20)字段复制到一个varchar(10)变量中。在大多数情况下,并没有什么问题,但当字段数据超过10个字符后,就会得到一个运行错误。这种问题经常发生在客户在使用数据库过程中。要找到这些错误,只需选择菜单"tools"下的"SP/Trigger/View Analyzer",然后按F9(Start Analyzing)。 3.如何了解你的数据库服务器的垃圾回收功能是否工作 打开数据库,选择菜单"Services/Database Statistics",按F9(Retrieve Statistics)。在Summary页,你可以看到Versions栏,其中有些与版本相关的子栏目,如Version len(version length)和Max versions。如果垃圾回收功能工作正常的话,这两个值应该很低。如果这两个值比较高,说明垃圾回收功能工作不正常,这可能是由很多因素造成的,一般来说,可能是由于你的程序中没有正确使用事务。 4.如何改变一个数据库中所有表的字符集 打开菜单"Tools/Extract Metadata",你可以创建一个脚本包括了创建数据库和插入对应数据(包括blob数据)的语句。你可以在脚本中用查找替换功能更改字符集名,然后将原始数据库文件更名(即备份老数据库避免覆盖),再重新运行脚本创建新的数据库。 5.如何比较不同数据库元信息的异同并得到一个差异脚本 打开菜单"Tools/Database comparer"。这个功能将创建一个脚本,它包含了可以用来同步数据库结构的所有差异信息。 6.如何对存储过程及触发器进行版本管理 在IBExpert的存储过程或触发器的编辑器中,只需单击"Version History"页,然后确定在数据库中增加一些辅助对象。这样,这些对象的所有变化就会自动保存下来,还可以在窗口中比较这些变化。 7.如何比较当前数据库与另一个数据库的对象 在IBExpert注册一个数据时,只需设置"Comparative DB"(译注:一般在左边功能树的下面)为你要参考比较的数据库即可。这样,在大多数对象编辑器中,你可以单击比较页来看当前数据库和参考数据库相关信息的异同。 8.如何自动创建insert、update、delete或其它操作的sql语句 只需打开SQL编辑器,将表或任何对象从数据库浏览器中拖放进编辑器即可。有一个向导将把产生对象可能的几种sql语句显示出来。 9.如何找到所有对当前对象有依赖关系的对象 只需打开菜单"Tools/Dependencies viewer",将对象拖放到这个窗口中。它将以树状结构显示所有与这个对象有依赖关系的对象的依赖结构。 10.如何比较不同硬件环境和数据库服务器的处理速度 我们建议使用IBExpert Demo Database脚本(一般在\program files\HK-Software\IBExpertDemoDB\db1.sql)。它将创建一个简单的购物数据库。当运行这个过程,并用10000作为参数时,它将创建10000个顾客和10000个商品等。这样全部加在一起有750000个数据库操作,数据库大小为25MB。这将运行10到20秒。想创建更大的数据库,只需用更大的参数即可,比如initall(100000)将创建约250MB的数据库,这个过程将大约有7.5M的数据库操作。如果用这个脚本测试Interbase,请在运行前将脚本中的"select first 1 "语句替换成 "select ... rows 1"。在测试中,将看到Firebird2比Firebird1.5要快75%。
相关文章