摘要:
No SQL,No cost. SQL语句是造成数据库开销最大的部分。而不良SQL写法直接导致数据库系统性能下降的情形比比皆是。那么如何才能称得上高效的SQL语句呢?一是查询优化器为当前的SQL语句生成最佳的执行计划,保证数据读写使用最佳路径;二是设置合理的物理存储结构,如表的类型,字段的顺序,字段的数据类型等。本文主要描述如何编写高效的SQL语句并给出示例。下面的描述主要分为三个部分,一是编写高效SQL语句,二是使用索引提高查询性能的部分,三是总结部分。一、编写高效SQL语句1) 选择最有效的表名顺序(仅适用于RBO模式) ... 阅读全文
摘要:
前面已经把定位的数据通过加载LC0结构来加载到寄存器里,已经具备了定位的条件。那么内核进行重定位主要做些什么事情呢?要了解整个过程,当然要学习编译原理,因为进行重定位之后,主要是为了建立C语言的运行环境的需求。由于C语言是基于栈式的语言,又有全局变量,说明内存结构至少有两个,一个是全局数据区,一个是栈。因此,重定位就是修改全局数据区和栈的访问。在全局数据的内存的表达方式,GCC是使用GOT(GLOBALOFFSET TABLE)来组织的,所以需要修改GOT表里每一项的数据地址,才可以让C语言编译出来的程序可以访问到正确的地址。由于栈的内存需要更新和写入,所以需要栈指向的内存是可读写的。但ROM 阅读全文
摘要:
PL/SQL变长数组时PL/SQL集合数据类型中的一种,其使用方法与PL/SQL嵌套表大同小异,唯一的区别则是变长数组的元素的最大个数是有限制的。也即是说变长数组的下标固定下限等于1,上限可以扩展。下面给出具体的描述及其使用方法。一、变长数组语法 TYPE type_name IS {VARRAY | VARYING ARRAY} (size_limit) OF -->type_name 用于指定varray类型名,size_limit 定义varray元素的最大个数 element_type [NOT NULL]; -->element_type用于指定元素的数据类型 varra 阅读全文
摘要:
It is very easy for us to implement sql tuning by toad. We need to do is just give complex sql statement to toad. The articlegive you some examples to demonstrate how to tuning sql by toad for oracle.1.Get execution planEditor --> Explain plan current SQL or CTRL + E2.Get statistics/Auto TraceEna 阅读全文
摘要:
通常情况下,在PL/SQL中,处理单行单列的数据可以使用标量变量,而处理单行多列的数据则使用PL/SQL记录是不错的选择。单列多行数据则由联合数组或嵌套表来完成,其特点是类似于单列数据库表。在Oracle 9i 之前称为PL/SQL索引表,9i 之后称之为联合数组。嵌套表也是集合类型中的一种,下面分别介绍这两种集合数据类型的使用方法。一、联合数组1、联合数组的特性 类似于一张简单的SQL表,按照主键进行检索数据 其数据行并不是按照预定义的顺序存储。当使用变量来检索其数据时,每行数据会分配一个连续的下标且从1开始。 下标可以为负值,且下标的数据类型支持binary_integer,pls_in. 阅读全文
摘要:
内核在上面处理完关闭中断,并且确认进入系统模式后,就需要解决第一个问题:解决自己到底在那里运行的问题。这个问题,就好比一个人在大海里航行而没有指南针,根本找不到北在那里,急切地想知道方向在那里。如果在白天还可以靠大阳就知道了方向,在晚上可以靠北斗星,在内核里是否也有这样的大自然的指示呢?在内核里没有天然的指示,但可以有人为的,下面就来看看内核到底是怎么添加自己的太阳,自己的北斗星呢。内核在那里运行,在编译时就已经决定了,如果还不了解,可以看前面编译的文章。如果运行地址与编译时的不一致,就会导致很严重的问题产生,内核直接死掉,或者刚运行一段,就不再往下跑了,又或者运行的数据乱七八糟,导致I/O口 阅读全文
摘要:
对 DBA 而言,CREATE TABLE AS 可谓是家常便饭,顺手拈来。需不知该方式虽然简单,但疏忽也容易导致意想不到的问题。笔者前阵子就碰上了这样的事情。由于是对原表进行克隆,且数据存储在不同的表空间,因此毫不犹豫地使用了CREATE TABLE AS,结果在运行package时,error...--1、非空约束遗失
-->使用create table as 来创建对象
scott@CNMMBO> create table tb_dept as select * from dept where 1=0; Table created. scott@CNMMBO> desc 阅读全文
摘要:
游标在数据库领域被广泛使用,尤其是对于需要将SQL语句返回的数据集进行逐行处理的时候。这为数据处理提供了极大的便利性,然游标的不当使用从某种程度上而言会降低数据库的性能。下面的是一个来自生产环境的实际例子,由于使用了参数游标,所以引发了多次遍历。一、源代码-->下面的procedure用于为trade生成一个新的contract_num,并将其更新到对应的记录PROCEDURE assign_contract_num( businessdate_in trade_client_tbl.trade_date%TYPE, err_num OUT NUMBER, err_msg OUT VAR 阅读全文
摘要:
通过上面的架构的学习,可以知道ARM体系总共有8个架构,每个架构有着不同的功能,因此下面的这个宏,就是选择第2个架构,因为第2个构架与后面的架构是有着很大的区别,比如第2个架构是24位地址线的,而后面架构全是32位的。并且支持的指令和寄存器也存在着差别,所以需要根据不同的架构来选择编译的代码,否则就会让CPU运行不能识别的指令。从这里学习到的知识点,就是可以定义宏来选择不同的CPU兼容性的代码。#ifndef__ARM_ARCH_2__在ARM体系中主要有以下三种调试方式:1)ARMulator,打开AXD软件时默认打开的目标就是ARMulator。2)基于JTAG的调试代理Multi-ICE 阅读全文
摘要:
case语句与case表达式是plsql流程控制的重要组成部分,尽管其使用方法较为简单,但容易混淆。本文将描述case语句与case表达式并给出演示以便于更好理解两者的异同及使用时的注意事项。一、简单case语句-->语法 CASE SELECTOR
WHEN EXPRESSION 1 THEN STATEMENT 1;
WHEN EXPRESSION 2 THEN STATEMENT 2;
...
WHEN EXPRESSION N THEN STATEMENT N;
ELSE STATEMENT N+1;
END CASE; --简单的case语句是指SELECTOR中得到的值或结果 阅读全文