自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

与数据和AI有关的东西

生活不止眼前的苟且,还有诗和远方的田野

  • 博客(29)
  • 收藏
  • 关注

原创 蒙特卡洛方法的应用——解决“彩色砖块”问题

同贝叶斯方法一样,蒙特卡洛方法与其说是一种算法,不如说是一种思想。灵活的运用蒙特卡洛方法可以解决很多问题。比如可以用它来求pi,求pi肯定有比这更好的方法,但是蒙特卡洛方法是所需条件最少的,只是充分利用了计算机产生随机数的能力。我们不需要知道pi等于什么级数,只需要知道圆的面积等于pi*r**2。下面来看如何用蒙特卡洛方法解决一个实际问题,而且其它的方法不太容易解决。关于彩色砖块http://www

2017-09-23 14:29:40 624

原创 MapReduce的二次排序

二次排序问题是指在归约阶段对与某个键关联的值排序,有时也称为值键转换。 利用二次排序可以使归约阶段的值是有序的。MapReduce框架对映射器生成的键排序,传入归约器的数据都是按键排序的。利用MapReduce框架完成二次排序的方法构造一个组合中间键(K , V) ,其中K是分区键,V是用来排序的值 此中间键做为Map的输出的键,Map的输出会按照此组合键排序; 定制Partitioner,不

2017-09-14 23:59:25 299

原创 看懂Hive的执行计划

官方文档 https://cwiki.apache.org/confluence/display/Hive/LanguageManual+Explain关于Hive执行计划简述一般执行计划有两个部分: stage dependencies 各个stage之间的依赖性 stage plan 各个stage的执行计划一个stage并不一定是一个MR,有可能是Fetch Operator,也有

2017-09-14 20:49:05 5462 2

原创 Oracle的多版本控制小实验

本文将演示Oracle的多版本控制,以及串行化事务。在session1中,建一个表,插入两条测试数据SESSION1:SCOTT@ prod> create table t ( x int ) ;Table created.SCOTT@ prod> insert into t values(1) ;1 row created.SCOTT@ prod> select * from t ;

2017-09-03 00:46:05 397

原创 Oracle用HASH簇表优化latch hit过低

部署测试环境以SYS用户在HR中建立与DBA_OBJECTS相同的表,重复插入得到100万行,并且添加一列ID,为这列添加连续的值,并建立唯一索引。 将AWR快照的产生时间设为10分钟。 在五个窗口并行执行:建立簇表所需信息HASHKEYS=distinct values SIZE=(avg_row_len*total_rows/HashKeys)*1.1 1.2可能更保险

2017-09-02 11:00:51 577

原创 完整的RMAN备份示例

备份策略备份时间:每天午夜12点开始。 备份策略: 一 二 三 四 五 六 日 增 增 增 增 增 增 全RMAN配置:控制文件自动备份OFF。 冗余度为3。备份脚本:0级备份 /home/oracle/backupscripts/level0.sh#!/usr/bin/bash#backup script for level 0source /

2017-09-02 10:48:25 420 1

原创 脏读和READ UNCOMMITED隔离级别

读取到别的事务中尚未提交的数据,是绝对应该避免的。 一般来说脏读都是没意义的,都是坏事,在READ UNCOMMITED事务隔离级别下允许脏读。Oracle无论如何都不会出现脏读,不支持READ UNCOMMITED事务隔离级别。MySQL支持READ UNCOMMITED事务隔离级别(为了实现读的无阻塞):SESSION1:mysql> select @@tx_isola

2017-09-02 10:43:41 885

原创 Oracle TX锁(事务锁)

也叫事务锁。每个事务只能有一个。 每个事务对应该一个TX锁,在该事务中修改或者select for update的每一行都会指向这个锁(数据块的结构中有相关的标志)。 如果一个事务想修改的某条记录已经被另一个事务锁住,那么这个事务会等待,如果再有事务会形成一个列表,等待的信息可以在v$lock里面查到。做一个实验(在TOM书的197页)准备实验数据:SCOTT@ prod>

2017-09-02 10:40:04 666

原创 BP神经网络的原理及Python实现

网络结构层数:2 输入个数:3 隐藏层节点数:10 输出层节点数:1数据结构用一个dict表示整个网络: {’input_layer’ : 输入节点列表 , ‘hidden_layer’ : 隐藏层节点列表 , ‘output_layer’ : 输出层节点列表 }输入节点:{‘input_value’ : num}隐藏节点:{‘bias

2017-09-02 10:35:53 1774

原创 Oracle 块头的事务槽

INITRANS 初始个数,默认为2,每个块会预分配2个事务槽。 MAXTRANS 事务槽的最大个数,为255(新版本已经不可设置了)。 事务槽的增加是需要空间的,如果块上空间不足,事务槽的数量将达不到255。 每个事务槽代表一个并发事务。探索小实验:SCOTT@ prod> create table t ( x int primary key , y varchar2(40

2017-09-02 10:18:26 561

原创 hive GenericUDAF中的四种模式解析

每个模式下,输入数据的类型是不会变的,而调用的数据处理函数都有两种可能。partial1的输入只可能是原始数据;partial2的输入只可能是部分聚合结果;final的输入是部分聚合数据;complete的输入是原始数据;terminatePartial()与terminate()的输入是有两种可能性的,要按照模式来区分处理。

2017-09-02 10:14:33 923

原创 Oracle SQL高级编程——分析函数(窗口函数)全面讲解

参加《Oracle SQL高级编程》概述分析函数是以一定的方法在一个与当前行相关的结果子集中进行计算,也称为窗口函数。 一般结构为 Function(arg1 , arg2 ……) over(partition by clause order by clause windowing clause )Windowing clause : rows | range between start_ex

2017-09-02 02:16:36 1302

原创 Oracle SQL高级编程——位图联结索引

参加《Oracle SQL高级编程》一个典型的数据仓库查询: 这个查询中sales 是事实表 , 一般很大。 Products , customers , channels是维度表 , 一般很小,可以有冗余。SH@ prod1> explain plan for 2 select sum( s.quantity_sold ) , sum( s.amount_sold ) from sal

2017-09-02 02:00:35 399

原创 Oracle SQL高级编程——Model子句全解析

参见 《Oracle SQL高级编程》。第一个例子,初步认识SH@ prod> col product format a30SH@ prod> col country format a10SH@ prod> col region format a10SH@ prod> col year format 9999SH@ prod> col week format 99SH@ prod> col

2017-09-02 01:52:17 1467

原创 Oracle SQL高级编程——子查询因子化全解析

参见《Oracle SQL高级编程》。概述子查询因子化就是ANSI中的公共表达式。 从11.2开始,子查询因子化开始支持递归。可以实现CONNECT BY的功能。标准的子查询因子化的例子这是一个非常复杂的查询,下面是不加因子化的版本。注意PIVOT的用法。select * from ( select /*+ gather_plan_statistics */ product ,

2017-09-02 01:31:33 615

原创 Oracle优化——如何查看语句的准确的执行计划(explain plan可能不是真实的)

参见 Oracle性能优化求生指南。建虚拟索引HR@ prod> create index test_ix1 on employees4 ( employee_id ) nosegment;HR@ prod> alter session set "_use_nosegment_indexes" = true ;HR@ prod> set autotrace onHR@ prod> se

2017-09-02 00:23:00 819

原创 Oracle优化——星型联结转换(star_transformation_enabled)

参见 Oracle性能优化求生指南。另外请了解星型联结索引,此类问题的最佳实践。这是一个星型联结的例子,sales为事实表,其它为维度表。Where条件全部都作用在维度表上面。SH@ prod> select quantity_sold , amount_sold from sales s join products p using ( prod_id ) 2 join times

2017-09-02 00:16:42 1493

原创 Oracle优化——外联结的执行计划

外联结不要使用Oracle自有的方式在where条件中加(+),而要用ANSI的方式(… OUTER JOIN)。Oracle的方式不支持全外联结,而且存在诡异的BUG。左外连接与右外连接时,Oracle会把返回全部记录的表做为驱动表,哪怕这样是违背了ordered提示。可以应用所有的联结方法,效率也与内联结相仿。HR@ prod> select /*+ ordered */ first_n

2017-09-02 00:12:16 322

原创 外联结的ON条件与WHERE条件的区别

请注意以下联结的不同。employee_id = 200作为联结条件时,会有其余的行输出:HR@ prod> select /*+ ordered */ first_name , last_name , department_name 2 from employees e right outer join departments d on ( e.department_id = d.d

2017-09-02 00:10:14 357

原创 Oracle优化——三种联结方法

NESTED LOOPS条件:内表必须有索引,否则会造成NESTED TABLE SCAN。选取比例小。SORT MERGE条件:选取表中行的比例较大。内表没有索引。缺点:需要对表排序,内存开销非常大。HASH JOIN(先将一张表做成HASH表,再做NESTED LOOPS)条件:必须是等值连接。优势:同等条件下强于SORT MERGE。选取行的比例大时,优于NESTED LO

2017-09-02 00:03:11 390

原创 Oracle优化——LIKE与索引(以%开头的LIKE会不走索引或走索引全扫描)

这样会走索引范围扫描,因为这个表达式有前导性。SH@ prod> set autotrace onSH@ prod> select max(cust_credit_limit) , count(*) from customers_ne where cust_last_name like 'Vaugh%' ;MAX(CUST_CREDIT_LIMIT) COUNT(*)--------

2017-09-01 23:58:25 6824

原创 Oracle优化——固化的基线(作用类型于存储提纲)

参见 Oracle性能优化求生指南。当有固化的基线存在时,即使有导致执行计划发生改变的变化发生时,也不会产生新的基线。所以固化的基线不会进化。而且,当有固化基线时,优化器首先选择固化基线,不管它是不是最优化的。Oracle建议使用固化基线而不是存储提纲。SH@ prod> select /*ghbaselines1*/ count(*) from customers join count

2017-09-01 23:51:08 322

原创 Oracle优化——基线自动捕捉(optimizer_capture_sql_plan_baselines,默认值为FALSE)

参见 Oracle性能优化求生指南。SYS@ prod> select count(*) from dba_sql_plan_baselines ; COUNT(*)---------- 2SYS@ prod> show parameter spfileNAME TYPE VALUE

2017-09-01 23:49:20 2133

原创 Oracle性能优化——SQL基线(SQL baseline)的载入与进化(11g中引入的基线)

参见 Oracle性能优化求生指南SYS@ prod> conn sh/shConnected.执行想要创建基线的语句,语句的执行计划将会被缓存SH@ prod> set autotrace onSH@ prod> select /*ghbaselines1*/ count(*) from customers join countries using ( country_id )

2017-09-01 23:46:27 963

原创 Oracle高级优化——侵入存储提纲(用PRIVATE OUTLINE)

参见 Oracle性能优化求生指南。如果某语句当前的执行计划并不令人满意,而且这条语句又不能加hint(因为在应用中不能编辑)。那么可以用这种方法,使执行计划稳定在一个与当前执行计划不同的执行计划上。SYS@ prod> conn hr/hrConnected. 为所要调整的语句用当前的执行计划(并不是想要的)创建一个outline。HR@ prod> create outline p

2017-09-01 23:40:49 285

原创 Oracle 存储提纲(stored outline)

详细参考 Oracle性能优化求生指南Stored outline是为了保证执行计划的稳定性,尤其是指在Oracle重新收集统计信息之后。已经逐渐被放弃,取而代之的是计划基线(PLAN BASELINE,在10g中并不完全可用)。存储提纲的使用:锁定下面这条语句的当前的执行计划(使以后执行这条语句时都用这个执行计划)HR@ prod> select last_name from em

2017-09-01 23:36:10 335

原创 Oracle 用hint来影响执行计划

全表扫描提示SYS@ prod> grant plustrace to hr ;Grant succeeded.SYS@ prod> conn hr/hrConnected.HR@ prod> set autotrace onHR@ prod> select /*+ full(employees) */ first_name from employees where employe

2017-09-01 23:29:10 273

原创 DBMS_STATS的用法

收集表的统计信息(表大小写没关系,USER是一个SQL函数):HR@ prod> begin  2  dbms_stats.gather_table_stats  3  ( ownname => user ,   4  tabname => 'EMPLOYEES' ) ;  5  end ;  6  / PL/SQL procedure successfully c

2017-09-01 23:20:32 1305

原创 Oracle 11g引用分区reference partition

解决的问题:如果父表是分区表,子表想要按照父表的方式进行分区。父表中被引用的主键列不一定要是分区键。 一个例子:下面是设计分区方案过程中的一个典型问题,并非所有表都需要根据其进行分区的列。假设要创建一个销售系统,该系统包括两个简单的表(sales 和customers)。 customers 表的创建如下所示: create table customers  

2017-09-01 22:40:48 2274

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除