<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[javacoffe的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/javacoffe</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; javacoffe]]></copyright><item><title><![CDATA[Oracle RAC数据库环境下临时表空间的设置问题]]></title><link>https://blog.youkuaiyun.com/javacoffe/article/details/50607166</link><guid>https://blog.youkuaiyun.com/javacoffe/article/details/50607166</guid><author>javacoffe</author><pubDate>Fri, 29 Jan 2016 14:43:38 +0800</pubDate><description><![CDATA[Oracle RAC数据库环境下临时表空间的设置问题
在RAC数据库中，有一个非常容易被忽视的问题，那就是RAC数据库的临时表空间的设置。这个问题对Oracle RAC数据库的其实非常重要，其对数据库的整体负载均衡以及请求的及时响应，都有非常重要的影响。
在RAC数据库中，临时表空间会被所有的数据库实例所共享。同时临时表空间会被划分为盘区，即Extent，同时这些盘区会被缓存在实例的SGA中。]]></description><category></category></item><item><title><![CDATA[Java异常处理新特性]]></title><link>https://blog.youkuaiyun.com/javacoffe/article/details/43935899</link><guid>https://blog.youkuaiyun.com/javacoffe/article/details/43935899</guid><author>javacoffe</author><pubDate>Wed, 25 Feb 2015 11:39:03 +0800</pubDate><description><![CDATA[在Java7中Java对其自身的异常处理机制进行了改进，同时增加了很多新的特性，这些特性对于编写更加可靠的程序有着非常大的帮助作用。这里我们对其进行详细的介绍。
1 try-with-resources语句
    Java7中提供了一种更为简单实用的用于处理资源使用异常处理的特性，称为try-with-resources，这个所谓的try-with-resources，是个语法糖。实际上就是]]></description><category></category></item><item><title><![CDATA[并行化资源池队列3——紧密相关的同步化队列]]></title><link>https://blog.youkuaiyun.com/javacoffe/article/details/41869023</link><guid>https://blog.youkuaiyun.com/javacoffe/article/details/41869023</guid><author>javacoffe</author><pubDate>Thu, 11 Dec 2014 16:52:45 +0800</pubDate><description><![CDATA[紧密相关的同步化队列


现在来看一种紧密相关的同步方式。一个或多个生产者线程生产数据，并由一个或多个消费者线程按照先进先出的次序来获取。但是，生产者与消费者之间必须相互回合，即向队列中放入一个元素的生产者应阻塞直到该元素被另外一个消费者取出，反之亦然。其实现的伪代码描述如下：
publicclassSynchronousQueue{
      T 
item=null;
    ]]></description><category></category></item><item><title><![CDATA[并行化资源池队列2——无锁化的无界队列]]></title><link>https://blog.youkuaiyun.com/javacoffe/article/details/41845137</link><guid>https://blog.youkuaiyun.com/javacoffe/article/details/41845137</guid><author>javacoffe</author><pubDate>Wed, 10 Dec 2014 13:44:17 +0800</pubDate><description><![CDATA[无锁化的无界队列


Java™ 5.0 第一次让使用 Java 语言开发非阻塞算法成为可能，java.util.concurrent 包充分地利用了这个功能。非阻塞算法属于并发算法，它们可以安全地派生它们的线程，不通过锁定派生，而是通过低级的原子性的硬件原生形式 —— 例如比较和交换。非阻塞算法的设计与实现极为困难，但是它们能够提供更好的吞吐率，对生存问题（例如死锁和优先级反转）也能提供更]]></description><category></category></item><item><title><![CDATA[并行化资源池队列1——部分有界队列]]></title><link>https://blog.youkuaiyun.com/javacoffe/article/details/41827705</link><guid>https://blog.youkuaiyun.com/javacoffe/article/details/41827705</guid><author>javacoffe</author><pubDate>Tue, 09 Dec 2014 19:19:42 +0800</pubDate><description><![CDATA[并行化资源池队列
1前言
     在并发系统中很多地方都要用到作为资源池的并行化队列，如在大多数应用中，一个或多个生产者线程生产数据，一个或多个消费者消费数据。这些数据元素可以是需要执行的的任务、要解释的键盘输入、待处理的订单或需要解码的数据包。有的时候生产者会突然加速，产生数据的速度会远远超过消费者使用数据的速度。为了使消费者可以跟得上生产者，需要生产者和消费者之间放置一个缓冲区，将那些来]]></description><category></category></item><item><title><![CDATA[解析Oracle数据扫描 Oracle SQL查询优化 总结篇]]></title><link>https://blog.youkuaiyun.com/javacoffe/article/details/7552248</link><guid>https://blog.youkuaiyun.com/javacoffe/article/details/7552248</guid><author>javacoffe</author><pubDate>Thu, 10 May 2012 00:16:04 +0800</pubDate><description><![CDATA[之前我们讨论了在数据库中数据读取操作的类型，重点讨论了对数据读取操作大为有益的局部范围扫描的数据读取方式，同时还探讨了数据库优化器模式对于启用局部范围扫描的影响，以及启用局部范围扫描的前提下优化器设置的原则，之后我们通过探讨一个语句中查询条件的类别及其所起到的作用，并通过查询条件的类别和作用，得出了提升局部范围数据扫描的原则，即“局部范围扫描性能提升策略描述矩阵”。
        接下来我们又]]></description><category></category></item><item><title><![CDATA[解析Oracle数据扫描 Oracle SQL查询优化 引导局部范围数据扫描的方法（7）]]></title><link>https://blog.youkuaiyun.com/javacoffe/article/details/7550932</link><guid>https://blog.youkuaiyun.com/javacoffe/article/details/7550932</guid><author>javacoffe</author><pubDate>Wed, 09 May 2012 17:43:47 +0800</pubDate><description><![CDATA[通过编写PL/SQL函数实现局部范围扫描
       通过Oracle提供的PL/SQL编程语言，可以实现创建过程化SQL函数。在函数中不仅可以存在一个以上的SQL，而且还可以存在多样化的运算、条件处理、循环执行等语句。它依据外部所接受的值或固定的常量来执行必要的数据处理，并返回一个最终的处理结果。因此，我们可以通过编写函数，来处理复杂全局数据范围的运算，并通过函数将这些操作包装起来，从而避免]]></description><category></category></item><item><title><![CDATA[解析Oracle数据扫描 Oracle SQL查询优化 引导局部范围数据扫描的方法（6）]]></title><link>https://blog.youkuaiyun.com/javacoffe/article/details/7545752</link><guid>https://blog.youkuaiyun.com/javacoffe/article/details/7545752</guid><author>javacoffe</author><pubDate>Tue, 08 May 2012 12:52:45 +0800</pubDate><description><![CDATA[通过分离SQL语句实现局部范围数据扫描
        通常情况下应该尽量使实现某个功能的SQL语句的各个组成部分放在一起运行比较有效。但是在少数的情况下，使用将SQL分离的方法反倒比较有效。这种情况主要存在于，经常对具有1:M关系的两张表进行查询时，起到对“M”方过滤条件的数据来自于”1”方。通常“M”方的数据会比较多的可能性较大，如果此时为“1”方的表赋予了一个对应数据范围较大的查询条件，则]]></description><category></category></item><item><title><![CDATA[解析Oracle数据扫描 Oracle SQL查询优化 引导局部范围数据扫描的方法（5）]]></title><link>https://blog.youkuaiyun.com/javacoffe/article/details/7543484</link><guid>https://blog.youkuaiyun.com/javacoffe/article/details/7543484</guid><author>javacoffe</author><pubDate>Mon, 07 May 2012 18:43:57 +0800</pubDate><description><![CDATA[利用嵌套视图实现局部范围数据扫描
        很显然有些SQL语句只能进行全部范围数据扫描，而无法直接进行局部范围数据扫描，如：排序操作和分组统计操作。这些操作的执行特点决定了必须要得到全部数据范围内的数据，才能够得到最后的执行结果。
        但是面对这种SQL语句，我们虽然不能直接引导它们进行局部范围数据扫描，但是我们可以采用间接的手段将这些语句引导成按照局部范围扫描来执行。我们]]></description><category></category></item><item><title><![CDATA[解析Oracle数据扫描 Oracle SQL查询优化 引导局部范围数据扫描的方法（4）]]></title><link>https://blog.youkuaiyun.com/javacoffe/article/details/7539578</link><guid>https://blog.youkuaiyun.com/javacoffe/article/details/7539578</guid><author>javacoffe</author><pubDate>Sun, 06 May 2012 15:23:12 +0800</pubDate><description><![CDATA[灵活应用ROWNUM虚拟列
    Rownum并不是表中实际存在的物理列，而是一个可以被使用在任何SQL语句中的虚拟列。如果能够正确的理解Rownum概念和特性，那么就可以将其应用在Where条件中，引导优化器只处理指定的行数，因此可见这属于局部范围扫描范畴。但是如果不了解Rownum的特性就草率的使用它，则有可能无法输出期望的结果，同时也无法按照设想的数据扫描方式运行。现在讨论一下如何利用R]]></description><category></category></item><item><title><![CDATA[解析Oracle数据扫描 Oracle SQL查询优化 引导局部范围数据扫描的方法（3）]]></title><link>https://blog.youkuaiyun.com/javacoffe/article/details/7533379</link><guid>https://blog.youkuaiyun.com/javacoffe/article/details/7533379</guid><author>javacoffe</author><pubDate>Fri, 04 May 2012 00:24:57 +0800</pubDate><description><![CDATA[过滤型局部范围扫描
       在日常应用开发过程中，经常会遇到需要判断满足某些查询条件的集合是否存在，其实这种操作本质上是一种特殊的过滤操作，既需要用一个集合为源，另一个集合为判断标准，使用这个判断标准作为过滤器去过滤源集合。
        在执行这种操作过程中，最理想的执行方式是当遇到第一个满足条件的记录时就停止整个执行过程返回结果，因为此时已经确认了满足条件的集合的存在，如果此时批量]]></description><category></category></item><item><title><![CDATA[解析Oracle数据扫描 Oracle SQL查询优化 引导局部范围数据扫描的方法（2）]]></title><link>https://blog.youkuaiyun.com/javacoffe/article/details/7531400</link><guid>https://blog.youkuaiyun.com/javacoffe/article/details/7531400</guid><author>javacoffe</author><pubDate>Thu, 03 May 2012 14:21:09 +0800</pubDate><description><![CDATA[发现只通过索引就能获取查询数据的机会
         如果能够有效的通过索引来获取数据，那么无疑会对查询性能提供很大的帮助。但是如果索引的选择性较差时，或者虽然索引的选择性很好，但是要查询的数据范围很大时（如：进行计数、求和等数据统计时），那么此时通过索引来查询数据时，就很可能对数据查询性能造成伤害。为什么会这样？这主要是由于通过索引来扫描数据的特点决定的。通过索引来获取数据时，在查询第一条满]]></description><category></category></item><item><title><![CDATA[解析Oracle数据扫描 Oracle SQL查询优化 引导局部范围数据扫描的方法（1）]]></title><link>https://blog.youkuaiyun.com/javacoffe/article/details/7525565</link><guid>https://blog.youkuaiyun.com/javacoffe/article/details/7525565</guid><author>javacoffe</author><pubDate>Tue, 01 May 2012 13:00:51 +0800</pubDate><description><![CDATA[设法改变访问路径
       前面说过一个SQL语句如果进行引发排序的操作，通常会进行全部范围扫描。如下面的SQL语句：
Select * from product where item_cd like ‘AB%’ and category like ‘C%’
order by item_cd desc;
由于存在排序操作，因此无法进行局部范围扫描。但是我们知道，如果在字段item_cd]]></description><category></category></item><item><title><![CDATA[解析Oracle数据扫描 Oracle SQL查询优化  提高局部范围数据扫描执行性能的原理]]></title><link>https://blog.youkuaiyun.com/javacoffe/article/details/7522334</link><guid>https://blog.youkuaiyun.com/javacoffe/article/details/7522334</guid><author>javacoffe</author><pubDate>Sun, 29 Apr 2012 14:51:37 +0800</pubDate><description><![CDATA[解析Oracle数据扫描 Oracle SQL查询优化

（2）

2、 提高局部范围数据扫描执行性能的原理：
2.1查询条件的类别与作用：
      当我们发起一个带有条件的查询SQL语句时，通常会赋予该语句多个查询条件，在这些查询条件中，通常会有一个或者几个查询条件会作为数据检索的发起者，这些作为发起者的查询条件称为“驱动查询条件”；同时那些不作为数据检索发起者的查询条件，在整个]]></description><category></category></item><item><title><![CDATA[解析Oracle数据扫描 Oracle SQL查询优化 数据读取方式]]></title><link>https://blog.youkuaiyun.com/javacoffe/article/details/7521655</link><guid>https://blog.youkuaiyun.com/javacoffe/article/details/7521655</guid><author>javacoffe</author><pubDate>Sun, 29 Apr 2012 00:00:48 +0800</pubDate><description><![CDATA[解析Oracle数据扫描
——Oracle SQL查询优化
（1）
数据读取方式
1、 Oracle数据读取操作：
1.1数据读取操作类型：
        在任何的数据库中，当我们发起一个SQL语句进行数据查询时，SQL执行引擎为了能够返回我们需要的数据，都会进行数据扫描。这个扫描可能直接发生在特定的内存空间中，也可能发生在存放数据的磁盘上。但无论如何归结起来，数据扫描的类型大致可以]]></description><category></category></item><item><title><![CDATA[如何诊断Oracle Redo Log引发的性能问题]]></title><link>https://blog.youkuaiyun.com/javacoffe/article/details/5953679</link><guid>https://blog.youkuaiyun.com/javacoffe/article/details/5953679</guid><author>javacoffe</author><pubDate>Wed, 20 Oct 2010 11:23:00 +0800</pubDate><description><![CDATA[如何诊断Oracle Redo Log引发的性能问题]]></description><category></category></item><item><title><![CDATA[Oracle审计功能]]></title><link>https://blog.youkuaiyun.com/javacoffe/article/details/5627298</link><guid>https://blog.youkuaiyun.com/javacoffe/article/details/5627298</guid><author>javacoffe</author><pubDate>Thu, 27 May 2010 10:06:00 +0800</pubDate><description><![CDATA[Oracle审计功能一、    审计分类：Oracle中审计总体上可分为“标准审计”和“细粒度审计”后者也称为“基于政策的审计”，在Oracle10G之后功能得到很大增强。其中标准审计可分为用户级审计和系统级审计。用户级审计是任何Oracle用户可设置的审计，主要是用户针对自己创建的数据库表或视图进行审计，记录所有用户对这些表或视图的一切成功和(或)不成功的访问要求以及各种类型的SQL操作]]></description><category></category></item><item><title><![CDATA[Oracle直方图的详细解析]]></title><link>https://blog.youkuaiyun.com/javacoffe/article/details/5578206</link><guid>https://blog.youkuaiyun.com/javacoffe/article/details/5578206</guid><author>javacoffe</author><pubDate>Tue, 11 May 2010 13:04:00 +0800</pubDate><description><![CDATA[Oracle直方图解析
一、   
何谓直方图：
直方图是一种统计学上的工具，并非Oracle专有。通常用于对被管理对象的某个方面的质量情况进行管理，通常情况下它会表现为一种几何图形表，这个图形表是根据从实际环境中所收集来的被管理对象某个方面的质量分布情况的数据所绘制成的，通常会画成以数量为底边，以频度为高度的一系列连接起来的矩形图，因此直方图在统计学上也称为质量分布图。比如下图所示，是一个]]></description><category></category></item><item><title><![CDATA[如何加速Oracle大批量数据处理]]></title><link>https://blog.youkuaiyun.com/javacoffe/article/details/5181570</link><guid>https://blog.youkuaiyun.com/javacoffe/article/details/5181570</guid><author>javacoffe</author><pubDate>Tue, 12 Jan 2010 14:56:00 +0800</pubDate><description><![CDATA[如何加速Oracle大批量数据处理一、           提高DML操作的办法：简单说来：１、暂停索引，更新后恢复.避免在更新的过程中涉及到索引的重建.２、批量更新，每更新一些记录后及时进行提交动作.避免大量占用回滚段和或临时表空间.３、创建一临时的大的表空间用来应对这些更新动作．4、批量更新，每更新一些记录后及时进行提交动作.避免大量占用回滚段和或临时表空间.5、创建一临时]]></description><category></category></item><item><title><![CDATA[使用dbms_repair修复受损数据块]]></title><link>https://blog.youkuaiyun.com/javacoffe/article/details/4707060</link><guid>https://blog.youkuaiyun.com/javacoffe/article/details/4707060</guid><author>javacoffe</author><pubDate>Wed, 21 Oct 2009 10:00:00 +0800</pubDate><description><![CDATA[使用dbms_repair修复受损数据块1、根据在全表扫描中出现的受损数据块的绝对文件号和数据块号的提示确定受损对象：select segment_name,segment_type,owner,tablespace_name,partition_name  from dba_extents  where file_id = &AFN and &BL between block_i]]></description><category></category></item></channel></rss>