18.3.?用法示例

  1. 创建数据库testdb,配置数据库uxsinodb.conf文件。

    vim testdb/uxsinodb.conf

    设置预加载共享库项shared_preload_libraries,并在文件尾添加配置参数。

    shared_preload_libraries = 'ux_hint_plan'
    ux_hint_plan.enable_hint = on
    ux_hint_plan.debug_print = on
    ux_hint_plan.message_level = log
  2. 配置完成后,启动数据库testdb,连接ux_hint_plan。

    create extension ux_hint_plan;
    create table a(id int primary key, info text, crt_time timestamp);
    create table b(id int primary key, info text, crt_time timestamp);
    insert into a select generate_series(1,100000), 'a_'||md5(random()::text), clock_timestamp();
    insert into b select generate_series(1,100000), 'b_'||md5(random()::text), clock_timestamp();
    analyze a;
    analyze b;

    结果如图:

  3. 使用hint和不使用hint结果对比。

    执行以explain语句,查看结果。

    explain select a.*,b.* from a,b where a.id=b.id and a.id  < 10; 

    没有使用ux_hint_plan时, 需要使用开关来改变UXDB的执行计划,查看结果。

    set enable_nestloop=off;
    explain select a.*,b.* from a,b where a.id=b.id and a.id < 10;
    set enable_nestloop=on;
    explain select a.*,b.* from a,b where a.id=b.id and a.id < 10;

    使用ux_hint_plan来改变Uxdb的执行计划,查看结果。

    /*+ HashJoin(a b) SeqScan(b) */ explain select a.*,b.* from a,b where a.id=b.id and a.id < 10;
    /*+ SeqScan(a) */ explain select * from a where id < 10;
    /*+ BitmapScan(a) */ explain select * from a where id < 10;
XML 地图 | Sitemap 地图