2013-05-02 SQL语句远程调用(remote)引发的性能问题
2013-05-08 23:00
387 查看
今天抓到一条SQL语句执行了近6个小时。
分析了下执行计划,问题出在远程调用主数据上,由于执行计划是在本地生成,无法获取远程表的统计信息,所以无法生成准确的执行计划,执行计划中用的是nested loops相当于是两个for循环,在这么大的数据量的情况下很不适用(见附录)。还有一个原因是数据库把远程表的数据取过来也很耗时。
数据规模:
select count(1) from GG_INSTALL_TRANSFORMER;--106462
select count(1) from GG_INSTALL_POINT;--4300278
select count(1) from GG_CONTRACT;--3349652
select count(1) from GG_USER;--3360398
执行计划:
解决方案:1. 把主数据的几张表同步到本地数据库中。
2. 分成多个SQL,把调用远程数据库的功能剥离出来,把取数据的功能建立在远程数据库中供本地数据库调用。
分析了下执行计划,问题出在远程调用主数据上,由于执行计划是在本地生成,无法获取远程表的统计信息,所以无法生成准确的执行计划,执行计划中用的是nested loops相当于是两个for循环,在这么大的数据量的情况下很不适用(见附录)。还有一个原因是数据库把远程表的数据取过来也很耗时。
数据规模:
select count(1) from GG_INSTALL_TRANSFORMER;--106462
select count(1) from GG_INSTALL_POINT;--4300278
select count(1) from GG_CONTRACT;--3349652
select count(1) from GG_USER;--3360398
执行计划:
解决方案:1. 把主数据的几张表同步到本地数据库中。
2. 分成多个SQL,把调用远程数据库的功能剥离出来,把取数据的功能建立在远程数据库中供本地数据库调用。
相关文章推荐
- 【转】SQLServer 2005新功能,一些性能方面问题,sql 经典语句
- 使用 Hibernate 在 JPA 中 调用 generateSchema 会出现执行两次 SQL 语句问题的解决方法
- MySql语句性能问题定位--从sql语句到磁盘IO检查
- 一条sql语句引发mysql不停创建临时表的问题解决..coping to tmp table on desk
- 调用.NET Serviced Component引发的性能问题及其解决
- sql查询语句性能问题及编写时需要注意的地方
- 网站性能-错误的sql语句导致的严重性能问题
- Flex 并行调用Remote Object的性能问题
- 找出存在性能问题的sql语句
- Flex 并行调用Remote Object的性能问题
- PostgreSQL的SQL语句中的双引号引发的问题
- sqlite3 实现批量处理 sql语句,避免频繁操作数据库,从而影响性能的问题
- SQL语句导致性能问题
- sql语句中的字段类型与sql表字段类型不一致可能引起的性能问题
- 利用sql语句调用bat(批处理)+ftp实现文件远程拷贝和注入
- ASP中SQL语句导致的性能问题
- mybatis查询sql:where语句“查询时间字段书写问题”引发的索引失效
- sql语句的性能优化问题
- 调用.NET Serviced Component引发的性能问题及其解决
- 数据库性能优化分析案例---解决SQL语句过度消耗CPU问题