oracle索引

MySQL 优化技巧

柔情痞子 提交于 2019-12-20 08:48:12
MySQL优化三大方向: 1 优化MySQL所在服务器内核(此优化一般由运维人员完成)。 2 对MySQL配置参数进行优化(my.cnf)此优化需要进行压力测试来进行参数调整。 3 对SQL语句以及表优化。 MySQL参数优化: 1 MySQL 默认的最大连接数为 100,可以在 mysql 客户端使用以下命令查看 mysql > show variables like 'max_connections' ; + -- -- -- -- -- -- -- -- - + -- -- -- - + | Variable_name | Value | + -- -- -- -- -- -- -- -- - + -- -- -- - + | max_connections | 500 | + -- -- -- -- -- -- -- -- - + -- -- -- - + 1 row in set ( 0.00 sec ) 2 当前连接的线程的个数 mysql > show status like 'threads_connected' ; + -- -- -- -- -- -- -- -- -- - + -- -- -- - + | Variable_name | Value | + -- -- -- -- -- -- -- -- -- - + -- -- -- - + |

Oracle性能优化

社会主义新天地 提交于 2019-12-20 07:25:44
前言 最近hyddd一直看Oracle的资料,今天特地总结一下这段时间了解到的 关于Oracle性能优化的下手点 。 一 . 数据库优化的方向 1.程序设计(这点最重要,如果程序本身设计有问题,再怎么进行下面的优化都是徒劳的。) 2.操作系统优化 3.硬件优化 4.数据库优化 5.SQL语句优化 二 . 硬件优化 这里涉及到的硬件主要有:硬盘,内存。 1.硬盘的读写速度:建议增加硬盘的数量,从而增加每秒的并发操作。 2.内存大小。 三 . 数据库优化 以上是Oracle 9i的体系结构,关于Oracle数据库的优化,很大程度上图有关。 1. 根据数据库的使用方式得出合理的优化策略 (1)OLTP:连机事务处理。 需要实时处理大量请求,而每次处请求的数据量都是很小的。OLTP是传统的关系型数据库的主要应用,主要是基本的、日常的事务处理,例如银行交易。 性能好坏的重要指标:响应时间与请求处理并发数。 (2)OLAP:联机分析处理。 可以简单地理解为在海量数据中得出统计/综合信息,是数据仓库的主要应用。做OLAP应用的数据库,数据量通常量非常大。和OLTP不同,OLAP应用的并发处理量是很低的,所以基本不用考虑并发问题。而在处理数据量方面,OLAP每次操作所需要处理的数据量通常都是非常大的,这点也和OLTP相反。 性能好坏的重要指标:查询大量数据的速度。

Mysql数据库的索引和视图详解

感情迁移 提交于 2019-12-19 23:24:44
Mysql数据库的索引和视图详解 索引的概念 数据库的索引与书籍中的目录类似 在一本书中,无需阅读整本书,利用目录就可以快速查找所需信息 书中的目录是一个词语列表,其中注明了包含各个词的页码 数据库索引 在数据库中,索引数据库程序无需对整个表进行扫描,就可以在其中找到所需数据 数据库中的索引是某个表中一列或若干列的集合,以及物理标识这些值的数据页的逻辑指针清单 索引的作用 设置了合适的索引之后,数据库利用葛总快速的定位技术,能够大大加快查询速率 特别是当表很大时,或者查询涉及到多个表时,使用索引可使查询加快成千倍 可以降低数据库的IO成本,并且索引还可以降低数据库的排序成本 通过创建唯一索引保证数据表数据的唯一性 可以加快表与表之间的连接 在使用分组和排序时,可大大减少分组和排序时间 索引分类 普通索引 这是最基本的索引类型,而且它没有唯一性的限制 唯一性索引 索引的列的所有值都只能出现一次,即必须唯一 主键 主键是一种唯一性索引,但它必须指定为“PRIMARY KEY” 全文索引 全文索引可以在VARCHAR或者TEXT类型的列上创建 创建索引的原则依据 表的主键,外键必须有索引 数据量超过300行的表应该有索引 经常与其他表进行连接的表,在连接字段上应该建立索引 唯一性太差的字段不适合建立索引 更新太频繁的字段不适合创建索引 经常出现在Where字句中的字段,特别是大表的字段

来来来!一次搞定各种数据库 SQL 执行计划:MySQL、Oracle、SQL Server、PostgreSQL 以及 SQLite

假如想象 提交于 2019-12-19 15:46:43
文章目录 MySQL 执行计划 Oracle 执行计划 SQL Server 执行计划 PostgreSQL 执行计划 SQLite 执行计划 执行计划(execution plan,也叫查询计划或者解释计划)是数据库执行 SQL 语句的具体步骤 ,例如通过索引还是全表扫描访问表中的数据,连接查询的实现方式和连接的顺序等。如果 SQL 语句性能不够理想,我们首先应该查看它的执行计划。本文主要介绍如何在各种数据库中获取和理解执行计划,并给出进一步深入分析的参考文档。 现在许多管理和开发工具都提供了查看图形化执行计划的功能,例如 MySQL Workbench、Oracle SQL Developer、SQL Server Management Studio、DBeaver 等;不过我们不打算使用这类工具,而是介绍利用数据库提供的命令查看执行计划。 我们先给出在各种数据库中查看执行计划的一个简单汇总: 数据库 执行计划 MySQL EXPLAIN sql_statement; Oracle EXPLAIN PLAN FOR sql_statement; SELECT * FROM TABLE(DBMS_XPLAN.display); SQL Server SET STATISTICS PROFILE ON; sql_statement; SET STATISTICS PROFILE

B树索引

自闭症网瘾萝莉.ら 提交于 2019-12-18 03:30:55
B-Tree索引是最常见的索引结构,默认创建的索引就是B-Tree索引。 一、B树索引的结构 B-树索引是基于二叉树结构的。B-树索引结构有3个基本组成部分:根节点、分支节点和叶子节点。其中根节点位于索引结构的最顶端,而叶子节点位于索引结构的最底端,中间为分子节点。 叶子节点(Leaf node): 包含条目直接指向表里的数据行。 分支节点(Branch node): 包含的条目指向索引里其他的分支节点或者是叶子节点。 根节点(Branch node): 一个B树索引只有一个根节点,它实际就是位于树的最顶端的分支节点。 可以用下图一来描述B树索引的结构。其中,B表示分支节点,而L表示叶子节点。 1.1关于分支节点块(包括根节点块) 1、 其所包含的索引条目都是按照顺序排列的(缺省是升序排列,也可以在创建索引时指定为降序排列)。 2、 每个索引条目(也可以叫做每条记录)都具有两个字段。第一个字段表示当前该分支节点块下面所链接的索引块中所包含的最小键值;第二个字段为四个字节,表示所链接的索引块的地址,该地址指向下面一个索引块。 3、 在一个分支节点块中所能容纳的记录行数由数据块大小以及索引键值的长度决定。比如从上图一可以看到,对于根节点块来说,包含三条记录,分别为(0 B1)、(500 B2)、(1000 B3),它们指向三个分支节点块。其中的0

oracle数据库索引管理-online rebuild index

人走茶凉 提交于 2019-12-18 02:51:17
1 online索引中断,导致index还处于rebuild状态。 使用DBMS_REPAIR.ONLINE_INDEX_CLEAN清除创建索引的临时对象 conn / as sysdbaDECLARE isClean BOOLEAN; BEGIN isClean := DBMS_REPAIR.ONLINE_INDEX_CLEAN(87386); --ORA-08104(87386) END; / 来源: CSDN 作者: 执笔画情ora 链接: https://blog.csdn.net/oradbm/article/details/103586216

SQL数据库基础语法

馋奶兔 提交于 2019-12-17 10:23:12
SQL语句的概述 SQL语言的分类   数据定义语言(Data Definition Language)主要用于修改、创建和删除数据库对象,其中包括CREATE ALTER DROP语句。   数据查询语言(Data Query Language)主要用于查询数据库中的数据,其主要是SELECT语句,SELECT语句包括五个子句,分别是FROM WHERE HAVING GROUP BY和WITH语句。   数据操作语言(Data Manipulation Language)主要用于更新数据库里数据表中的数据,包括INSERT UODATE DELETE语句。   数据控制语言(Data Control Language)主要用于授予和回收访问数据库的某种权限。包括GRANT REVOKE等语句。   事物控制语言,主要用于数据库对事物的控制,保证数据库中数据的一致性,包括COMMIT ROLLBACK语句。   常用的数据类型     MYSQL:           SQL语句的书写规范     SQL语句中不区分关键字的大小写     SQL语句中不区分列名和对象名的大小写     SQL语句对数据库中数据的大小写敏感     SQL语句中使用--注释时,--后面至少有一个空格,多行注释用/* */   数据库的创建与删除   (1)数据库的创建:     CREATE

Oracle SQL查询优化

一笑奈何 提交于 2019-12-16 12:17:49
系统优化中很重要的方面是SQL语句的优化,对于海量数据,优质的SQL能够有效的提高系统的可用性。 总结的有点罗嗦,列个简单的目录啦~ 目录 第一部分 知识准备 第二部分 常用sql用法和注意事项 第三部分 sql优化总结     1. sql执行过程             1. exists 和 in 1. 优化一般原则     2. sql 共享               2. union 和 union all 2. 具体注意事项     3. 绑定变量      3. with as     4. 数据表访问方式           4. order by     5. sql 执行顺序             5. group by     6. 索引使用               6. where 和 having                        7. case when 和 decode 知识准备 1. sql执行过程 1)执行过程   当一个oracle实例接收到一条sql后,执行过程如下:   1) create a cursor 创建游标   2) parse the statement 分析语句   3) describe results of a query 描述查询的结果集   4)define output of a query

Oracle数据库查看已添加的索引和创建索引

心已入冬 提交于 2019-12-16 03:33:06
/** *查看目标表中已添加的索引 * */ --在数据库中查找表名 select * from user_tables where table_name like 'tablename%' ; --查看该表的所有索引 select * from all_indexes where table_name = 'tablename' ; --查看该表的所有索引列 select * from all_ind_columns where table_name = 'tablename' ; /* *创建索引 * */ create index idx01 tablename( column ); 来源: CSDN 作者: 张某某啊哈 链接: https://blog.csdn.net/qq_36908872/article/details/103522596

《精品篇】如何在不影响Oracle生产库性能评估整库大小

爱⌒轻易说出口 提交于 2019-12-14 01:37:02
【引言】 最近碰到一个小问题:一TB级的Oracle生产库,因为要走数据迁移,需要先行评估整个库的迁移数据量大小,但又不得影响生产库运行性能。如何搞?大家都知道,expdp数据泵有两个很好用的参数ESTIMATE和ESTIMATE_ONLY,此两个参数可以保证在不真正发起逻辑备份的情况下评估整个迁移生产库的大小。 这里使用$ expdp -help先看expdp的ESTIMATE和ESTIMATE_ONLY两个参数的介绍: ESTIMATE Calculate job estimates. Valid keyword values are: [BLOCKS] and STATISTICS. ESTIMATE_ONLY Calculate job estimates without performing the export. ESTIMATE 默认:blocks 指定计算每张表使用磁盘空间的方法 ESTIMATE=[BLOCKS | STATISTICS] 1.BLOCKS - 通过块数和块大小计算 2.STATISTICS -每张表的统计信息计算 Expdp可计算导出数据大小容量,通过两种方式进行容量估算,一种是通过数据块数量、一种是通过统计信息中记录的内容估算。两者在不同版本中,可能有巨大的性能差异。 通过expdp的参数ESTIMATE