Archive for 一月, 2008

sort

星期一, 一月 21st, 2008

sort 命令
先介绍下-d 参数忽略一些特殊字符,比如说%
-f参数忽略大小写
-u忽略重复行

 cat test.txt
ORANGE
Persimmon
apple
apple
%%banana
banana
orange

先看下-u参数
 sort -u test.txt
apple
banana
%%banana
orange
ORANGE
Persimmon
可以看见apple已经忽略

(全文…)

sql优化的两个参数

星期一, 一月 21st, 2008

今天群里一个兄弟说,有个SQL按某个索引执行时就很快,按时间走就很慢,让查了下表的数据量和distinct_keys,以及clustering_factor,一个num_rows是9000多W distinct 900多,一个是num_rows也是9000多W,distinct 20000多。但是

clustering_factor 两者相差10000多,这也是为什么前者比后者快的原因。按理说distinct 大的索引的选择性比较高。但是这里却因为clustering_factor导致后者慢

(全文…)

Oracle专家调优秘密

星期一, 一月 21st, 2008

来自:http://www.21ds.net/article/27/26254 

前言

在过去的十年中,Oracle已经成为世界上最专业的数据库之一。对于IT专家来说,就是要确保利用Oracle的强大特性来提高他们公司的生产力。最有效的方法之一是通过Oracle调优。它有大量的调整参数和技术来改进你的Oracle数据库的性能。

  Oracle调优是一个复杂的主题。关于调优可以写整整一本书不过,为了改善Oracle数据库的性能,有一些基本的概念是每个Oracle DBA都应该遵从的。

  在这篇简介中,我们将简要地介绍以下的Oracle主题:

  –外部调整:我们应该记住Oracle并不是单独运行的。因此我们将查看一下通过调整Oracle服务器以得到高的性能。

  –Row re-sequencing以减少磁盘I/O:我们应该懂得Oracle调优最重要的目标是减少I/O。

  –Oracle SQL调整。Oracle SQL调整是Oracle调整中最重要的领域之一,只要通过一些简单的SQL调优规则就可以大幅度地提升SQL语句的性能,这是一点都不奇怪的。

  –调整Oracle排序:排序对于Oracle性能也是有很大影响的。

  –调整Oracle的竞争:表和索引的参数设置对于UPDATE和INSERT的性能有很大的影响。

  我们首先从调整Oracle外部的环境开始。如果内存和CPU的资源不足的话,任何的Oracle调整都是没有帮助的。

  外部的性能问题

(全文…)

shared pool

星期五, 一月 18th, 2008

源地址连接:http://tech.ddvip.com/2007-09/118949904834079_11.html 

1. shared pool的概念

  oracle数据库作为一个管理数据的产品,必须能够认出用户所提交的管理命令(通常叫做SQL语句),从而进行响应。认出的过程叫做解析SQL语句的过程,响应的过程叫做执行SQL语句的过程。解析的过程是一个相当复杂的过程,它要考虑各种可能的异常情况,比如SQL语句涉及到的对象不存在、提交的用户没有权限等等。而且,还需要考虑如何执行SQL语句,采用什么方式去获取数据等。解析的最终结果是要产生oracle自己内部的执行计划,从而指导SQL 的执行过程。可以看到,解析的过程是一个非常消耗资源的过程。因此,oracle在解析用户提交的SQL语句的过程中,如果对每次出现的新的SQL语句,都按照标准过程完整的从头到尾解析一遍的话,效率太低,尤其随着并发用户数量的增加、数据量的增加,数据库的整体性能将直线下降。

(全文…)

ORACLE的锁

星期五, 一月 18th, 2008

锁概念基础

数据库是一个多用户使用的共享资源。当多个用户并发地存取数据时,在数据库中就会产生多个事务同时存取同一数据的情况。若对并发操作不加控制就可能会读取和存储不正确的数据,破坏数据库的一致性。

加锁是实现数据库并发控制的一个非常重要的技术。当事务在对某个数据对象进行操作前,先向系统发出请求,对其加锁。加锁后事务就对该数据对象有了一定的控制,在该事务释放锁之前,其他的事务不能对此数据对象进行更新操作。

在数据库中有两种基本的锁类型:排它锁(Exclusive Locks,即X锁)和共享锁(Share Locks,即S锁)。当数据对象被加上排它锁时,其他的事务不能对它读取和修改。加了共享锁的数据对象可以被其他事务读取,但不能修改。数据库利用这两种基本的锁类型来对数据库的事务进行并发控制。

(全文…)