oracle向pg迁移中的sql优化问题?

1、两表字段匹配时由于字段类型不同,导致性能下降。
2、两表字段匹配,同时大表字段有条件筛选,由于sql代码问题,先匹配再筛选,导致性能下降。
3、筛选字段上应用了时间或字符函数,导致未用索引。
其他可能还有,待各位老师和同行补充。
个人觉得,oracle对于情况1和2,可能有些自带的优化处理,导致不发生性能问题,而同样的语句拿到pg,就不行了。
在数据库迁移中会遇到大量的问题sql,能不能有通用的处理方法,能自动发现到上述会引起性能问题sql?

参与12

2同行回答

oltponeoltpone业务咨询顾问null
数据库基本都提供慢查询、慢日志功能业务在上线前核心模块做好压力测试,上线后周期性分析慢日志和持续优化显示全部

数据库基本都提供慢查询、慢日志功能

业务在上线前核心模块做好压力测试,上线后周期性分析慢日志和持续优化

收起
IT其它 · 2023-09-14
浏览458
austindatabaseaustindatabase数据库架构师互联网金融
1 首先应该了解,字段类型在两种数据库之间的不同表达的方式,在更替PostgreSQL 数据库中替换效率更高的字段类型,如 VARCHAR  不选择 Char 类型等2  了解POSTGRESQL 与 ORACLE 在索引上的异同点,比如函数索引在POSTGRESQL 是可以被使用的3  针对JOIN 中非等值...显示全部

1 首先应该了解,字段类型在两种数据库之间的不同表达的方式,在更替PostgreSQL 数据库中替换效率更高的字段类型,如 VARCHAR  不选择 Char 类型等

2  了解POSTGRESQL 与 ORACLE 在索引上的异同点,比如函数索引在POSTGRESQL 是可以被使用的

3  针对JOIN 中非等值计算中无法和ORACLE 使用 Merge Join 的问题,需要对语句进行拆分,甚至采用新的语句的写法来进行替换

关于发现迁移性能中的问题是否能自动化发现,这需要

1   有相关的迁移后的业务POC 压测
2  开启PostgreSQL 相关的插件 pg_stat_statement  在压测期间,发现SQL 性能的问题
3  通过数据库本身的手段 和 程序的手段 共同解决问题,而不是单纯依靠数据库的手段来单独解决。

收起
互联网服务 · 2023-09-01
浏览517

ChatGPT 回答

针对上述问题,可以采取以下解决思路:

  1. 两表字段匹配时由于字段类型不同,导致性能下降

在这种情况下,可以考虑对字段类型进行转换,使其匹配。如果无法转换,则可以使用函数将字段进行转换,以便进行匹配。此外,还可以考虑使用索引来提高匹配的效率。

  1. 两表字段匹配,同时大表字段有条件筛选,由于sql代码问题,先匹配再筛选,导致性能下降

在这种情况下,可以考虑优化SQL语句,将筛选条件放在匹配条件之前,以便先筛选出需要的数据,再进行匹配。此外,还可以考虑使用索引来提高匹配和筛选的效率。

  1. 筛选字段上应用了时间或字符函数,导致未用索引

在这种情况下,可以考虑使用索引来提高查询效率。如果无法使用索引,则可以考虑对数据进行预处理,以便在查询时不需要使用函数。

对于数据库迁移中遇到的问题SQL,可以考虑使用自动化工具进行处理。例如,可以使用SQL性能分析工具来分析SQL语句的性能问题,并提供优化建议。此外,还可以使用SQL自动化工具来自动发现和修复性能问题SQL。

提问者

fable_cao
数据库管理员东吴证券股份有限公司

问题来自

相关问题

相关资料

相关文章

问题状态

  • 发布时间:2023-09-01
  • 关注会员:3 人
  • 问题浏览:1435
  • 最近回答:2023-09-14
  • X社区推广