kingbase常见数据字典

统计数据库相关信息

查看数据库数据读写信息
	select datname,blks_read,blks_hit,tup_returned,tup_fetched,tup_inserted,tup_updated,tup_deleted from sys_stat_database;
	
数据库连接数及事务操作信息
	select datname,numbackends,xact_commit,xact_rollback from sys_stat_database;

统计表相关的信息

查询表的索引扫描的比例
	select relid,schemaname,relname,seq_scan,idx_scan,
	trunc(cast (idx_scan as numeric)/(idx_scan+seq_scan)*100,2) || '%' as idx_scan_pct
	from sys_stat_user_tables where(idx_scan+seq_scan)>0
	order by idx_scan_pct desc limit 5;
	
查看表的HOT方式更新数据的比例
	select relid,schemaname,relname,n_tup_upd,n_tup_hot_upd,
	trunc(cast(n_tup_hot_upd as numeric)) / n_tup_upd*100,2||'%'
	as hot_pct from sys_stat_user_tables where n_tup_upd>0 order
	by hot_pct desc limit 5;
	
查询表的数据增改删的比例
	select relname,trunc(cast (n_tup_ins as numeric) / (n_tup_ins+n_tup_upd+n_tup_del)*100,2) || '%' as ins_pct,
	trunc(cast (n_tup_upd as numeric)/(n_tup_ins+n_tup_upd+n_tup_del)*100,2)||'%' as upd_pct,
	trunc(cast (n_tup_del as numeric)/(n_tup_ins+n_tup_upd+n_tup_del)*100,2)||'%' as del_pct
	from sys_stat_user_tables where relname='td1' order by relname;
	
查询表的数据时缓存命中的比例
	select relname,heap_blks_hit,heap_blks_read ,trunc(cast(heap_blks_hit as numeric)/(heap_blks_hit+heap_blks_read)*100,2)||'%' as hit_pct
	from sys_statio_user_tables where(heap_blks_hit+heap_blks_read)>0 
	order by hit_pct desc limit 5;
	
查询表的索引数据时缓存命中的比例
	select relname,idx_blks_hit,idx_blks_read ,trunc(cast(idx_blks_hit as numeric)/(idx_blks_hit+idx_blks_read)*100,2)||'%' as hit_pct
	from sys_statio_user_tables where(idx_blks_hit+idx_blks_read)>0 
	order by hit_pct desc limit 5;

统计表的空间占用信息
	select nspname,relname,sys_size_pretty(sys_relation_size(c.oid)) tsize
	from sys_class c left join sys_namespace n on c.relnamespace=n.oid 
	where nspname not in ('sys_catalog','information_schema')
	order by sys_relation_size(c.oid) desc limit 10;

统计索引相关信息

每次索引扫描返回的平均数据量
	select indexrelname,idx_scan,idx_tup_read,
	trunc(cast(idx_tup_read as numeric)/idx_scan,2) as avg_rows
	from sys_stat_user_indexes where idx_scan>0;
查询使用少的索引信息
	select schemaname,relname,indexrelname,idx_scan,
	sys_size_pretty(sys_relation_size(i.indexrelid)) as ind_size
	from sys_stat_user_indexes i join SYS_INDEX using(indexrelid)
	where INDISUNIQUE is false order by idx_scan desc,relname limit 5;
索引的数据缓存命中信息
	select indexrelname,idx_blks_hit,idx_blks_read,
	trunc(cast(idx_blks_hit as numeric)/(idx_blks_hit+idx_blks_read)*100,2)||'%' as hit_pct
	from sys_statio_user_indexes where (idx_blks_hit+idx_blks_read)>0
	order by hit_pct desc limit 5;

统计会话相关信息

查看连接数据库的客户端信息
	select datid,datname,pid,usesysid,usename,application_name,state,query from sys_stat_activity where not pid=sys_backend_pid();
查看长时间运行的操作及等待信息
	select pid,wait_event_type,wait_event,current_timestamp-least(query_start,xact_start)run_time,
	substr(query,1,50)sql_text from sys_stat_activity where not pid=sys_backend_pid();
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
可以通过以下步骤实现将Kingbase数据库中的数据同步到Kafka中: 1. 连接Kingbase数据库,获取对应的连接对象。 2. 使用JDBC从Kingbase数据库中查询需要同步的数据,并将查询结果存储在一个数据结构中。 3. 遍历查询结果,将每条数据转换为JSON格式,并发送到Kafka中。 4. 关闭Kingbase数据库的连接和Kafka的生产者。 下面是一个简单的示例代码,可以实现将Kingbase数据库中的一张表同步到Kafka中: ```java import java.sql.*; import java.util.Properties; import org.apache.kafka.clients.producer.*; import org.json.JSONObject; public class SyncData { public static void main(String[] args) throws SQLException { String bootstrapServer = "localhost:9092"; String topicName = "my_topic"; Properties props = new Properties(); props.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, bootstrapServer); props.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, "org.apache.kafka.common.serialization.StringSerializer"); props.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, "org.apache.kafka.common.serialization.StringSerializer"); Producer<String, String> producer = new KafkaProducer<>(props); Connection conn = DriverManager.getConnection("jdbc:kingbase://localhost:5432/mydb", "username", "password"); String query = "SELECT * FROM my_table"; Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery(query); while (rs.next()) { int id = rs.getInt("id"); String name = rs.getString("name"); int age = rs.getInt("age"); JSONObject json = new JSONObject(); json.put("id", id); json.put("name", name); json.put("age", age); producer.send(new ProducerRecord<>(topicName, json.toString())); } rs.close(); stmt.close(); conn.close(); producer.close(); } } ``` 需要注意的是,上述示例代码没有考虑数据类型转换、SQL注入等问题,实际使用时需要进行更加严格的处理。另外,如果需要进行增量同步或者双向同步,需要考虑数据的更新和删除情况。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值