从数据库管理角度聊聊AI医疗

2025年初,DeepSeek 作为一家专注于大规模深度学习模型研发与部署的前沿企业,以其卓越的技术突破,推动了大模型智能应用在多个领域的蓬勃发展。其成功不仅证明了人工智能的强大潜力,众多大模型的崛起,也为AI与医疗的深度融合提供了更广阔的想象空间。如可以提高疾病诊断的精准度,加速药物研发,推动个性化治疗方案的发展等。此外,AI还能改善医疗管理效率,提升了医生的工作体验,同时增强了患者的就医体验。那AI医疗和数据库还有关吗?

2024年年终总结

按照过去十几年的惯例,每逢农历年末我都要整理回顾过去的一年, 岁月流转,多年的坚持犹如一场漫长的旅程,而在这趟旅途中,一个问题愈发强烈地萦绕在我的心头:我到底在执着于什么?这一切的付出与努力,是否真正值得?

如何配置Oracle Gateway 到MySQL?

oracle 的gateway透明网管支持像oracle dblink一样访问异构数据库如mysql, sql server等,在十四年前当时在维护oracle和sql server时,安装配置过还写了个整理了《安装透明网关 for sql server》,时间过的真快,没想到这次oracle的交接已经全面展开,在过渡阶段可能会存在一些异构数据库的访问,使用 Oracle ODBC 网关和异构服务技术从 Oracle 系统访问 MySQL 数据,本文介绍如何使用 ODBC Driver for MySQL 创建MySQL 和 Oracle 的数据库链接,并通过 SQL*Plus 工具查询 MySQL 数据。

OGG Integrated replicat process Abend with error Ora-4031 “streams pool” “apply shared t”,”commbuf_knasctx[0]”

在 Oracle GoldenGate 中使用集成模式时,STREAMS_POOL 起着至关重要的作用。集成进程从“STREAMS POOL”获取共享内存。STREAMS POOL 是 SGA 的内存组件之一。STREAMS_POOL_SIZE 的大小应根据数据库系统中使用的集成提取的数量来确定。我们还应该考虑在数据库中使用 STREAMS POOL 的其他进程。最近一个案例ogg异常报错,因ora-4031 streams pool不足,简单记录。

如何在 PostgreSQL中强制Join连接顺序?

在oracle多表关连中有SQL hint可以干预CBO产生的不合理的表join顺序,如ordered, leading等,但PostgreSQL和部分基于PG国产数据库如Highgo V9.5, 目前也还不支持SQL hint。当遇到SQL性能问题,明确某个join 顺序更好时,如何影响PG数据库优化器执行指定的执行计划呢?如果您真的需要SQL hint,在pg中可以安装 pg_hint_plan 扩展,但目前应该是因为highgo的oracle和pg的双兼容模式,如果实现pg_hint_plan在解析器上隔离上要复杂了些,所以暂未实现,又或者不想安装第三方扩展,在这种情况下,记录几个可以强制执行join ordered的替代方法。

Oracle ASM normal /high redundancy DISKGROUP 丢失 1 failgroup影响:将继续运行,但无法重新启动

在oracle数据库中, 避免磁盘故障对于避免数据损坏至关重要,但有时,即使 ASM 具有冗余,也可能会发生多个故障。最近有个客户给两个存储做了2个Faigroup+1 Quorum  third voting disk on a NFS server,在测试高可用时,断开一个存储链路后发现些疑问,一个是断开期间有业务近10秒的挂起,另一个是重启节点后实例无法启动。

Oracle数据库中 Scalar-subquery 缓存和 DETERMINISTIC Function

前一段在Postgresql中的函数有Volate属性,像Volatile 是每次执行,而另外Immutable 和Stable可以所有会话或单个查询中对于相同的值cache结果,减少不必要的执行,如同oracle的DETERMINISTIC FUNCTIONS,确定性函数的意义在于,如果 Oracle 可以确定当前对该函数的调用使用的输入与上一次调用相同,那么它可以使用上一次结果并避免调用。 那cache大小有没有限制? 正像有些标量子查询循环,《Cost-Based Oracle Fundamentals》书中的Scalar Subqueries章节 提到了该限制

PostgreSQL 分区表管理的最佳实践

在使用 PostgreSQL 时,分区表可以有效管理和优化大规模数据表的存储和查询性能。在一些国产库中兼容了oracle的创建语法格式,有些仅支持语法存储还是pg,有些是连语法都未支持,在PG中创建分区的方法让oracle DBA可能有些难以适应,在PG中的分区分为parent/partitioned 和 child/partition tables , PostgreSQL支持range, list, hash分区。这里记录一些PG系使用过程中的注意事项。

PostgreSQL 中的Join连接策略和性能

PostgreSQL 中有三种连接策略,它们的工作原理截然不同。如果 PostgreSQL 选择了错误的策略,查询性能可能会受到很大影响。本文介绍了连接策略、如何使用索引支持它们、它们可能出现的问题以及如何调整连接以获得更好的性能。

openGauss PBE 和enable_pbe_optimization 参数

几年前整理过,在SQL使用 PBE(Parse Bind Execute) 时,如prepare statement, 如何生成gplan(通用执行计划)和cplan(定制执行计划), 及解析共享在如数据倾斜时可能存在的执行计划错误,前几天在opengauss系数据库做了切换后,较多SQL产生了错误的执行计划,因为错误的cost估算,有hash join 改成了nl join同样也是PBE的错误场景,仅记录。

openGauss系 Wrong Result bug select (*) 与 select * 不同记录

今天在客户一套库发现了个bug, select count(*) 与select *明细记录数不一致, 环境mogdb 508, 前者使用index only scan, 后者是index scan , 这种情况在oracle有时也能遇到,通常是索引条目与table条目不一致,如因为lost write导致,可以drop 并create index重建索引恢复,但是opengauss中还是第一次,在postgresql中控制记录的除了table, index还有可见性的vm,简单记录一下该问题。

Troubleshooting Oracle ASM instance crash with ‘Linux-x86_64 Error: 24: Too many open files’

oracle 11g r2 RAC 其中一个节点实例1 crash并重启,日志查看有提示“ Linux-x86_64 Error: 24: Too many open files”
** DBGRL Error: Linux-x86_64 Error: 24: Too many open files
Additional information: 1
** DBGRL Error: Exception [type: SIGSEGV, Address not mapped to object] [ADDR:0x5C] [PC:0x8238B00, lxhh2ci()+4] [flags: 0x0, count: 1]
Cannot open /proc/self/exe for reading: errno=24

WARNING: The converted filename ‘x’ is an ASM fully qualified filename. MUST_RENAME_THIS_DATAFILE On Oracle Standby

Oracle standby database恢复错误,因为源库使用的ASM OMF文件名格式, 有配置xx_file_name_convert参数, 替换了standby controlfile文件缺失,无法找到对应文件。standby database reocver无法启动,查看db alert log如下:

WARNING: The converted filename ‘+DATADG/stdbillb/datafile/cdr3.289.1088277783’
is an ASM fully qualified filename.
Changing the filename to ‘+DATADG/MUST_RENAME_THIS_DATAFILE_773.4294967295.4294967295’.
Please rename it accordingly.

PostgreSQL数据库 LOGS 最佳实践

日志是数据库用于诊断解决问题的途径,在生产环境中开启过多可能会导致性能问题,过少可能缺失日志,配置时有必要微调默认的日志配置参数,对应多个log_xxx参数,要达到理想的平衡,需要深入了解各种 PostgreSQL logging 指令是关键。定制日志记录设置以精确满足您的监控和故障排除需求。或何时可以动态的开启。

聊聊翰高数据库Highgo用户(实例和数据库)、模式兼容性(oracle、postgresql)、与PostgreSQL版本对应

翰高数据库 Highgo是基于PostgreSQL的数据库,但是版本较多有基于postgresql 9 、12、14多个版本,同时在兼容模式上也并不统一,如支持pg, oracle和正在增加的MySQL兼容模式,如V9.5版本可以实现一份数据,两种解析引擎模式的支持,同时在V9版本登录时还有实例级用户和数据库用户级,简单整理总结以扫盲。

Create Index on TimstmapTZ::date On PostgreSQL

在PostgreSQL中的时间类型较多,如TIME, DATE, INTERVAL, TIMESTAMP,和Timestamp With Timezone(TIMESTAMPTZ) , 而timestamp类型精确度非常高,如date类型是只有年月日,time又只有时间分秒,而timestamp是两者组合,同时可以带时区,如有在些基于postgresql国产数据库中为了兼容sysdate,注意函数的返回精确度,防止数据迁移丢失精度,但有时用户希望使用精度较低,如按日期检索和创建索引时有点有趣。为了说明这一点这里测试一下。

NVMe SSD 和硬 RAID卡 实现集中式数据库全栈国产化的100万IOPS+

随着数字经济的快速发展和数据量的激增,高性能数据库系统成为企业业务的核心基础设施之一。在全栈国产化的背景下,如何构建高效、可靠的存储架构,实现 100 万 IOPS 的性能目标, 做为集中式数据库的基础设施提供支持,成为企业关注的重点。本文探讨通过 NVMe SSD 和硬件 RAID 卡组合,构建集中式数据库系统的技术路径。如利用 4 块NVMe SSD,在 RAID 0 下实际性能可超过 1,600,000 IOPS,完全满足高负载数据库的需求。