oracle 比 mysql 查询快的原因_Oracle 查询速度慢的原因总结

news/2024/6/18 7:08:40 标签: oracle, mysql, 数据库

目录

  • 1. oraclemysql 查询快的原因_Oracle 查询速度慢的原因总结

oracle__mysql__Oracle__2">1. oraclemysql 查询快的原因_Oracle 查询速度慢的原因总结

查询速度慢的原因很多, 常见如下几种:

  1. 没有索引或者没有用到索引(这是查询慢最常见的问题, 是程序设计的缺陷)
  2. I/O 吞吐量小, 形成了瓶颈效应。
  3. 没有创建计算列导致查询不优化。
  4. 内存不足
  5. 网络速度慢
  6. 查询出的数据量过大(可以采用多次查询, 其他的方法降低数据量)
  7. 锁或者死锁(这也是查询慢最常见的问题, 是程序设计的缺陷)
  8. sp_lock,sp_who, 活动的用户查看, 原因是读写竞争资源。
  9. 返回了不必要的行和列
  10. 查询语句不好, 没有优化

可以通过如下方法来优化查询 :

  1. 把数据, 日志, 索引放到不同的 I/O 设备上, 增加读取速度, 以前可以将 Tempdb 应放在 RAID0 上, SQL2000 不在支持。数据量(尺寸)越大, 提高 I/O 越重要。

  2. 纵向, 横向分割表, 减少表的尺寸 (sp_spaceuse)

  3. 升级硬件

  4. 根据查询条件, 建立索引, 优化索引, 优化访问方式, 限制结果集的数据量。注意填充因子要适当(最好是使用默认值 0). 索引应该尽量小, 使用字节数小的列建索引好(参照索引的创建), 不要对有限的几个值的字段建单一索引如性别字段

  5. 提高网速;

  6. 扩大服务器的内存, Windows 2000 和 SQL server 2000 能支持 4-8G 的内存。配置虚拟内存: 虚拟内存大小应基于计算机上并发运行的服务进行配置。运行 Microsoft SQL Server? 2000 时, 可考虑将虚拟内存大小设置为计算机中安装的物理内存的 1.5 倍。如果另外安装了全文检索功能, 并打算运行 Microsoft 搜索服务以便执行全文索引和查询, 可考虑: 将虚拟内存大小配置为至少是计算机中安装的物理内存的 3 倍。将 SQL Server max server memory 服务器配置选项配置为物理内存的 1.5 倍(虚拟内存大小设置的一半).

  7. 增加服务器 CPU 个数; 但是必须明白并行处理串行处理更需要资源例如内存。使用并行还是串行程是 MsSQL 自动评估选择的。单个任务分解成多个任务, 就可以在处理器上运行。例如耽搁查询的排序, 连接, 扫描和 GROUP BY 字句同时执行, SQL SERVER 根据系统的负载情况决定最优的并行等级, 复杂的需要消耗大量的 CPU 的查询最适合并行处理。但是更新操作 Update,Insert, Delete 还不能并行处理。

  8. 如果是使用 like 进行查询的话, 简单的使用 index 是不行的, 但是全文索引, 耗空间。like ‘a%’ 使用索引 like ‘%a’ 不使用索引用 like ‘%a%’ 查询时, 查询耗时和字段值总长度成正比, 所以不能用 CHAR 类型, 而是 VARCHAR. 对于字段的值很长的建全文索引。

  9. DB Server 和 APPLication Server 分离; OLTP 和 OLAP 分离

  10. 分布式分区视图可用于实现数据库服务器联合体。联合体是一组分开管理的服务器, 但它们相互协作分担系统的处理负荷。这种通过分区数据形成数据库服务器联合体的机制能够扩大一组服务器, 以支持大型的多层 Web 站点的处理需要。有关更多信息, 参见设计联合数据库服务器。(参照 SQL 帮助文件’分区视图’)

    1. 在实现分区视图之前, 必须先水平分区表
    2. 在创建成员表后, 在每个成员服务器上定义一个分布式分区视图, 并且每个视图具有相同的名称。这样, 引用分布式分区视图名的查询可以在任何一个成员服务器上运行。系统操作如同每个成员服务器上都有一个原始表的复本一样, 但其实每个服务器上只有一个成员表和一个分布式分区视图。数据的位置对应用程序是透明的。
  11. 重建索引 DBCC REINDEX ,DBCC INDEXDEFRAG, 收缩数据和日志 DBCC SHRINKDB,DBCC SHRINKFILE. 设置自动收缩日志。对于大的数据库不要设置数据库自动增长, 它会降低服务器的性能。在 T-sql 的写法上有很大的讲究, 下面列出常见的要点: 首先, DBMS 处理查询计划的过程是这样的:

    1. 查询语句的词法, 语法检查
    2. 将语句提交给 DBMS 的查询优化器
    3. 优化器做代数优化和存取路径的优化
    4. 由预编译模块生成查询规划
    5. 然后在合适的时间提交给系统处理执行
    6. 最后将执行结果返回给用户其次, 看一下 SQL SERVER 的数据存放的结构: 一个页面的大小为 8K(8060) 字节, 8 个页面为一个盘区, 按照 B 树存放。
  12. Commit 和 rollback 的区别 Rollback: 回滚所有的事物。Commit: 提交当前的事物。没有必要在动态 SQL 里写事物, 如果要写请写在外面如: begin tran exec(@s) commit trans 或者将动态 SQL 写成函数或者存储过程。

  13. 在查询 Select 语句中用 Where 字句限制返回的行数, 避免表扫描, 如果返回不必要的数据, 浪费了服务器的 I/O 资源,


http://www.niftyadmin.cn/n/5051794.html

相关文章

爬楼梯Java(斐波那契数列)

题目:有n阶楼梯,一次只能爬一层或者两层,请问有多少种方法? 这类题目其实都可以用斐波那契数列来解决,比如: 一阶楼梯只有一种方法 二阶楼梯有(11,2)两种方法 三阶楼梯有(111,12,21)三种方法 四阶楼梯有(1111,121,112,22,211)五种方式 五阶楼梯有(11111,1112,122,1211,1…

14.TIM输出比较示例程序(PWM驱动LED呼吸灯PWM驱动舵机PWM驱动直流电机)

目录 输出比较相关库函数 PWM驱动LED呼吸灯 PWM驱动舵机 PWM驱动直流电机 输出比较相关库函数 1.OC初始化(掌握) // 配置输出比较模块,输出比较单元有四个,对应也有四个函数 // 第二个参数是结构体,就是输出比较…

数据库基础知识以及MySQL简介

关于MySQL的读法 MySQL如何发音?在国内MySQL发音有很多种,Oracle官方文档说他们念作 My sequal[si:kwəl]。 数据库基本概念 数据 数据(Data)是指对客观事物进行描述并可以鉴别的符号,这些符号是可识别的、抽象的。它…

C++: 模板(进阶)

学习目标 1.了解非类型模板参数 2.了解类模板的特化 3.知道模板分离编译会出现的问题 1.非类型模板参数(整型常量) 模板参数: 1.类型形参:在模板参数列表中,class/typename后的参数名称 2.非类型形参:整型常量 示例: template<class T ,size_t N>class arr{public://....…

华为云云耀云服务器L实例评测|云耀云服务器L实例部署Gitblit服务器

华为云云耀云服务器L实例评测&#xff5c;云耀云服务器L实例部署Gitblit服务器 一、云耀云服务器L实例介绍1.1 云耀云服务器L实例简介1.2 云耀云服务器L实例特点 二、Gitblit介绍2.1 Gitblit简介2.2 Gitblit特点 三、本次实践介绍3.1 本次实践简介3.2 本次环境规划 四、检查服务…

【RabbitMQ实战】06 3分钟部署一个RabbitMQ集群

一、集群的安装部署 我们还是利用docker来安装RabbitMQ集群。3分钟安装一个集群&#xff0c;开始。 前提条件&#xff0c;docker安装了docker-compose。如果没安装的话&#xff0c;参考这里 docker-compose文件参考bitnami官网&#xff1a;https://github.com/bitnami/contai…

在GEHC的第一个sprint记录

今天是进入GEHC XR ATX的第25天&#xff0c;是周日&#xff0c;下周二我的第一个sprint也就到期了&#xff0c;幸好在这周五晚上完成了&#xff0c;当然还差个分享。在此记录第一个sprint中两个story过程。 第一个story是操作固定式DR设备进行exposure整个过程。这是所有新人必…

C++,异常、转换函数、智能指针

目录 一、异常 1 C 异常机制&#xff1a; 2 使用try catch进行异常处理. 3、c 已经内置标准异常类&#xff0c;专业用于抛出的语法中 4 自定义异常&#xff1a; 5 函数只抛出&#xff0c;不处理。让上层函数处理&#xff0c;并且上层函数还可以不处理&#xff0c;让上上层…