- 浏览: 385534 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (269)
- FY_UML (3)
- FY_JAVA (12)
- FY_JavaScript脚本 (7)
- FY_JSP (3)
- FY_Tapestry框架 (12)
- FY_Spring框架 (3)
- FY_Manager (5)
- FY_Junit(单元测试) (3)
- SERVER (14)
- FY_Struts2框架 (3)
- FY_SVN (2)
- FY_NoSQL (2)
- FY_jquery_sir (13)
- FY_hibernate_sir (8)
- FY_设计模式_sir (6)
- FY_Extjs_sir (10)
- FY_CI_sir (5)
- FY_Oracle_sir (11)
- FY_MySql_sir (10)
- FY_Hadoop_sir (3)
- FY_SOA_sir (1)
- 中文分词技术 (1)
- FY_Android (52)
- FY_架构 (2)
- FY_PhoneGap (2)
- FY_Webstorm (5)
- FY_Sencha Touch (3)
- HTML5应用快速开发 (1)
- FY_python (0)
- HADOOP (1)
- AI (0)
最新评论
-
antao592:
楼主,HkDataSourceWrapper中的getCurr ...
结合spring jdbc 实现分表分库的数据库访问构思 -
bonait:
不错,看看我的这个怎么样www.zipin168.com
So Easy京东商城 -
chenzheng8975:
...
So Easy京东商城 -
yzhenxing:
我导入demo后少com.google.android.gms ...
google地图demo -
echoaiya:
非常感谢~~
google地图demo
-----------------------------------事务特性---------------------
1.原子性(atomicity) --事务处理要么全部进行,要么不进行。
2.一致性(consistency) –事务处理要将数据库从一种状态转变为另一种状态。
3.隔离性(isolation) –在事务处理提交之前,事务处理的效果不能由系统中的其他事务看到。
4.持久性(durability) –一旦提交了事务,他就永远生效。
5.set autocommit on--设置数据库系统环境为自动提交事务:
SQL> set autocommit on;
SQL> insert into dept values(50,'test','sz');
已创建 1 行。
提交完成。
SQL> set autocommit off;
SQL> insert into dept values(60,'test','wh');
已创建 1 行。
SQL> commit;
提交完成。
--------------------------------------死锁---------------------
当两个事务相互等待对方释放资源时,就会形成死锁
Oracle会自动检测死锁,并通过结束其中的一个事务来解决死锁
--------------------------------------锁------------------------
1.what
锁:锁是数据库用来控制共享资源并发访问的机制。
锁用于保护正在被修改的数据
直到提交或回滚了事务之后,其他用户才可以更新数据
(防止进程之间因为抢占资源,产生死锁而设定一种预防死锁产生的机制)
2.why
并行性 -允许多个用户访问同一数据
一致性 - 一次只允许一个用户修改数据
完整性 - 为所有用户提供正确的数据。如果一个用户进行了修改并保存,所做的修改将反映给所有用户
3.锁的类型
行级锁 -- 对正在被修改的行进行锁定。其他用户可以访问除被锁定的行以外的行
表级锁 -- 锁定整个表,限制其他用户对表的访问。
4. 行级锁
行级锁是一种排他锁,防止其他事务修改此行
在使用以下语句时,Oracle会自动应用行级锁:
INSERT
UPDATE
DELETE
SELECT … FOR UPDATE
SELECT … FOR UPDATE语句允许用户一次锁定多条记录进行更新
使用COMMIT或ROLLBACK语句释放锁
格式: SELECT … FOR UPDATE语法:
SELECT … FOR UPDATE [OF columns][WAIT n | NOWAIT];
例:锁定dept编号为40的记录,更新地址为'sz'
SQL> select * from dept where deptno = 40 for update of dname,loc;
DEPTNO DNAME LOC
---------- -------------- -------------
40 OPERATIONS BOSTON
SQL> update dept set loc ='sz' where deptno=40;
已更新 1 行。
SQL> commit;
提交完成。
SQL> select * from dept where deptno = 40 for update wait 5;--等待用户释放更新锁的时间为5秒,否则超时。
DEPTNO DNAME LOC
---------- -------------- -------------
40 OPERATIONS sz
SQL> select * from dept where deptno = 40 for update nowait;
DEPTNO DNAME LOC
---------- -------------- -------------
40 OPERATIONS sz
5. 表级锁
格式: Lock table < table_name> in <mode>;
类型:
共享锁(SHARE)
--锁定表,仅允许其他用户查询表中的行
--禁止其他用户插入、更新和删除行
--多个用户可以同时在同一个表上应用此锁
语法:
Lock table table_name in share mode [nowait];
rollback 和commit命令释放锁
Nowait 关键字告诉其他用户不用等待
例:部门表建立共享锁
SQL> select * from dept;
DEPTNO DNAME LOC
---------- -------------- -------------
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS sz
SQL> insert into dept values(50,'test','sz');
已创建 1 行。
SQL> lock table dept in share mode;
表已锁定。
共享更新锁(SHARE UPDATE)
--锁定要被更新的行
--允许其他用户同时查询、插入、更新未被锁定的行
--在 SELECT 语句中使用“FOR UPDATE”子句,可以强制使用共享更新锁
--允许多个用户同时锁定表的不同行
加锁的两种方法
(1)lock table tab_name in share update mode;
(2)Select column1, column2 From goods Where gid=1001 For update of column1, column2
lock table<tabale_name>[,<table_name>,....] in share update mode [nowait]
例:
SQL> lock table dept in share update mode nowait;
表已锁定。
排他(EXCLUSIVE) – 限制最强的表锁,仅允许其他用户查询该表的行。禁止修改和锁定表,共享锁与此相反.
lock table<tabale_name>[,<table_name>,....]
in exclusive mode [nowait]
例:
SQL> lock table dept in exclusive mode;
表已锁定。
--------------------------------------表分区------------------------
1.what
ORACLE的分区是一种处理超大型表、索引等的技术。分区是一种“分而治之”的技术,通过将大表和索引分成可以管理的小块,从而避免了对每个表作为一个大的、单独的对象进行管理,为大量数据提供了可伸缩的性能。分区通过将操作分配给更小的存储单元,减少了需要进行管理操作的时间,并通过增强的并行处理提高了性能,通过屏蔽故障数据的分区,还增加了可用性。
2.why
增强可用性:如果表的某个分区出现故障,表在其他分区的数据仍然可用;
维护方便:如果表的某个分区出现故障,需要修复数据,只修复该分区即可;
均衡I/O:可以把不同的分区映射到磁盘以平衡I/O,改善整个系统性能;
改善查询性能:对分区对象的查询可以仅搜索自己关心的分区,提高检索速度。
3.分区表的类型
范围分区 --就是对数据表中的某个值的范围进行分区,根据某个值的范围,决定将该数据存储在哪个分区上。如根据序号分区,根据业务记录的创建日期进行分区等
语法:
PARTITION BY RANGE (column_name)
(
PARTITION part1 VALUE LESS THAN(range1),
PARTITION part2 VALUE LESS THAN(range2),
...
[PARTITION partN VALUE LESS THAN(MAXVALUE)]
);
例:根据 money 创建分区,包含销售成本低于1000的所有产品的值
SQL> create table sales(
pid varchar2(5),
money number(10)
)
partition by range(money)
(
partition p1 values less than(1000),
partition p2 values less than(2000),
partition p3 values less than(3000)
);
表已创建。
散列分区 --允许用户对不具有逻辑范围的数据进行分区 ,通过在分区键上执行HASH函数决定存储的分区,将数据平均地分布到不同的分区,使得这些分区大小一致
语法:
PARTITION BY HASH (column_name)
PARTITIONS number_of_partitions;
或
PARTITION BY HASH (column_name)
( PARTITION part1 [TABLESPACE tbs1],
PARTITION part2 [TABLESPACE tbs2],
...
PARTITION partN [TABLESPACE tbsN]);
例:在表 Employee上创建分区键 Department,创建 3 个分区
SQL> CREATE TABLE Employee
(
id varchar2 (5),
name varchar2(20),
department varchar2 (10)
)
PARTITION BY HASH (department)
(
Partition D1,
Partition D2,
Partition D3
)
列表分区 -- 允许用户将不相关的数据组织在一起
语法:
PARTITION BY LIST (column_name)
(
PARTITION part1 VALUES (values_list1),
PARTITION part2 VALUES (values_list2),
...
PARTITION partN VALUES (DEFAULT)
);
例:根据职员住址在表上创建的列表分区
SQL>CREATE TABLE employees
(
id number(4),
name varchar2 (14),
address varchar2 (15)
)
PARTITION BY LIST (address)
(
Partition north values ('芝加哥'),
Partition west values ('旧金山','洛杉矶'),
Partition south values ('亚特兰大','达拉斯','休斯顿'),
Partition east values ('纽约','波斯顿')
)
复合分区 -- 范围分区与散列分区或列表分区的组合(注意:先一定要进行范围分区)
语法:
PARTITION BY RANGE (column_name1)
SUBPARTITION BY HASH (column_name2)
SUBPARTITIONS number_of_partitions
(
PARTITION part1 VALUE LESS THAN(range1),
PARTITION part2 VALUE LESS THAN(range2),
...
PARTITION partN VALUE LESS THAN(MAXVALUE)
);
例:在表的 SALES 列中创建范围分区,在表的 pid列创建散列子分区,在每个范围分区中创建 5个散列子分区
SQL>CREATE TABLE SALES
(
pid VARCHAR2 (5),
SALES_DATE DATE NOT NULL,
SALES_COST NUMBER (10)
)
PARTITION BY RANGE (SALES_DATE)
SUBPARTITION BY HASH (pid)
SUBPARTITIONS 5
(
PARTITION S1 VALUES LESS THAN (TO_DATE('01/4月/2001',
'DD/MON/YYYY')),
PARTITION S2 VALUES LESS THAN (TO_DATE('01/7月/2001',
'DD/MON/YYYY')),
PARTITION S3 VALUES LESS THAN (TO_DATE('01/9月/2001',
'DD/MON/YYYY')),
PARTITION S4 VALUES LESS THAN (MAXVALUE)
)
例:在表的 SALES 列中创建范围分区,在表的 SALES_COST列创建列表分区
SQL>CREATE TABLE SALES
(
pid VARCHAR2 (5),
SALES_DATE DATE NOT NULL,
SALES_COST NUMBER (10)
)
PARTITION BY RANGE (SALES_DATE)
SUBPARTITION BY list(SALES_COST)
SUBPARTITION template
(
subpartition aa values(2000,780),
subpartition other values(default)
)
(
PARTITION S1 VALUES LESS THAN (TO_DATE('01/4月/2001',
'DD/MON/YYYY')),
PARTITION S2 VALUES LESS THAN (TO_DATE('01/7月/2001',
'DD/MON/YYYY')),
PARTITION S3 VALUES LESS THAN (TO_DATE('01/9月/2001',
'DD/MON/YYYY')),
PARTITION S4 VALUES LESS THAN (MAXVALUE)
)
4. 查询表上有多少分区
select * from user_tab_partitions where table_name='表名';
5. 操纵已分区的表
在已分区的表中插入数据与操作普通表完全相同,Oracle会自动将数据保存到对应的分区
查询、修改和删除分区表时可以显式指定要操作的分区
INSERT INTO SALES VALUES ('P001','02-3月-2001',2000);
INSERT INTO SALES VALUES ('P002','10-5月-2001',2508);
INSERT INTO SALES VALUES ('P002','11-5月-2001',2508);
INSERT INTO SALES VALUES ('P002','12-5月-2001',2508);
INSERT INTO SALES VALUES ('P003','05-7月-2001',780);
INSERT INTO SALES VALUES ('P004','12-9月-2001',1080);
P002 2001-5-10 2508
SQL> select * from sales partition (S1);
PID SALES_DATE SALES_COST
----- -------------- ----------
P001 02-3月 -01 2000
P001 02-3月 -01 2000
SQL> delete from sales partition (S1);
已删除2行。
SQL> select * from sales partition (S1);
未选定行
-----速度比较
SQL> select * from sales partition (S2) where sales_date > to_date('2000-5-10','YYYY-MM-DD');
PID SALES_DATE SALES_COST
----- ----------- -----------
P002 2001-5-10 2508
P002 2001-5-10 2508
SQL> select * from sales where sales_date > to_date('2000-5-10','YYYY-MM-DD');
PID SALES_DATE SALES_COST
----- ----------- -----------
P001 2001-3-2 2000
P001 2001-3-2 2000
P002 2001-5-10 2508
P002 2001-5-10 2508
P003 2001-7-5 780
P004 2001-9-12 1080
6 rows selected
6. 分区维护操作
分区维护操作修改已分区表的分区。
分区维护的类型:
计划事件 - 定期删除最旧的分区
非计划事件 - 解决应用程序或系统问题
分区维护操作有:
添加分区
删除分区
截断分区
合并分区
拆分分区
--添加分区 – 在最后一个分区之后添加新分区
SQL> ALTER TABLE SALES
ADD PARTITION S5 VALUES LESS THAN (TO_DATE('01/4月/2001','DD/MON/YYYY'));
--删除分区 – 删除一个指定的分区,分区的数据也随之删除
SQL> ALTER TABLE SALES DROP PARTITION S4;
--截断分区 – 删除指定分区中的所有记录
SQL> ALTER TABLE SALES TRUNCATE PARTITION S3;
--合并分区 - 将范围分区或复合分区的两个相邻分区连接起来
SQL> ALTER TABLE SALES
MERGE PARTITIONS S1, S2 INTO PARTITION S2;
--拆分分区 - 将一个大分区中的记录拆分到两个分区中
SQL> ALTER TABLE SALES SPLIT PARTITION S2 AT (TO_DATE('11/5月/2001','DD/MON/YYYY'))
INTO (PARTITION S21, PARTITION S22);
SQL> select * from sales partition (S2);
PID SALES_DATE SALES_COST
----- ----------- -----------
P002 2001-5-10 2508
P002 2001-5-10 2508
P002 2001-5-11 2508
P002 2001-5-12 2508
SQL>
SQL> ALTER TABLE SALES SPLIT PARTITION S2 AT (TO_DATE('11/5月/2001','DD/MON/YYYY'))
2 INTO (PARTITION S21, PARTITION S22);
Table altered
SQL> select * from sales partition (S21);
PID SALES_DATE SALES_COST
----- ----------- -----------
P002 2001-5-10 2508
P002 2001-5-10 2508
SQL> select * from sales partition (S22);
PID SALES_DATE SALES_COST
----- ----------- -----------
P002 2001-5-11 2508
P002 2001-5-12 2508
--------------------------------------Oracle索引分区表操作------------------------
7. 总结
锁用于保护多用户环境下被修改的数据
锁分为两种级别,即行级锁和表级锁
表分区允许将一个表划分成几部分,以改善大型应用系统的性能
分区方法包括范围分区、散列分区、复合分区和列表分区
分区维护操作包括添加、删除、截断、合并和拆分分区
--------------------------------------索引组织表(index organized table)------------------------
1.what
2.why
3.锁的类型
- 锁与表分区.rar (4.6 KB)
- 下载次数: 4
发表评论
-
Oracle 执行计划(Explain Plan) 说明
2013-06-11 22:26 805如果要分析某条SQL的性能问题,通常我们要先看SQL的执行 ... -
ch02 oracle基础二
2012-11-03 11:06 0本章任务 1:游标 -- DECLARE CU ... -
ch01 oracle基础一
2012-11-03 11:03 0本章任务 1:网络配置 -- 1、在服务端要启动两个服 ... -
ch07 oracle的SQL语句优化
2010-09-20 15:40 1064------------------------------- ... -
ch03 oracle异常异常与动态sql
2010-09-20 15:35 1030------------------------------- ... -
ch06 oracle索引
2010-09-20 15:28 1159------------------------------- ... -
ch04 Oracle 数据库体系结构
2010-09-06 16:01 1091------------------------------- ... -
ch03 oracle基础三
2010-09-03 17:41 1209---数据迁移 本章任务 1:表模式 --可 ... -
ch08 oracle对象管理_表
2010-07-14 11:20 993对象管理_表 本章任务 1.管理普通 ... -
ch01 oracle基础一
2008-04-30 10:40 1445本章任务 1:网络配置 -- 1、在服务端要启动两个服 ... -
ch02 oracle基础二
2007-09-11 18:03 1455本章任务 1:游标 -- DECLARE CU ... -
ch00 数据库三范式经典实例解析
2007-08-29 16:32 3987数据库三范式经典实例解析 引言 ...
相关推荐
标题中的"ch06 oracle索引"表明我们将探讨Oracle数据库中的索引机制,这在数据库管理、查询优化以及性能提升方面具有重要意义。Oracle索引是一种数据结构,它能加速对表中数据的查找,提高查询速度,降低I/O操作,...
《Oracle Concept 11gR2 EN CH》是Oracle数据库系统的一款重要参考资料,它提供了对Oracle 11g Release 2(11gR2)核心概念的全面介绍,同时包含英文原文和中文翻译,方便中国用户学习和理解。这份文档的大小约为20...
本课件“ch1_oracle入门”旨在为初学者提供一个基础的学习平台,引导大家踏入Oracle的世界。Oracle 9i是Oracle数据库的一个版本,发布于2001年,它带来了许多新的特性和改进,比如提高了性能、可用性和可管理性。 ...
### Oracle 10g性能分析与优化:深入理解Latch及其优化策略 #### 一、Latch与Lock的区别 在Oracle数据库的性能优化过程中,理解和区分Latch与Lock是非常重要的。两者虽然都涉及资源的控制和访问,但其作用机制和对...
“ch03bb”章节可能涵盖了Oracle的事务管理与并发控制。他可能讲解了如何设置合适的事务隔离级别,以平衡并发性和一致性,同时避免死锁。还可能涉及到行锁定、多版本并发控制(MVCC)等技术。 “ch08”和“chap7”...
### Oracle CH03 部分:数据库性能优化与内部原理 #### 一、引言与背景 在《OracleDBA手记3》的第三章节中,叶正盛同学聚焦于数据库性能优化与内部原理的解析,特别是针对数据库访问性能的优化法则。尽管这部分...
《Ch7-Oracle数据库的备份恢复与性能优化.ppt》讲解了Oracle的数据保护策略,如RMAN( Recovery Manager)备份与恢复,以及性能调优的基础知识,如SQL分析、索引优化、表分区和数据库调整。 通过以上各章节的学习,...
* 一个对象的数据存储在表空间的任意一个数据文件中,也可将同一个对象的数据分布在表空间的多个数据文件中,还可以将同一个对象分布在多个表空间中(如对表进行分区后的分区表)。 * 表空间与数据文件的关系:一个...
提供的压缩包文件可能包含关于这些主题的章节,例如`ch06.rar`可能涉及索引优化,`ch05.rar`可能涵盖SQL调优,`ch10.rar`可能讨论高级优化技术,而`ch01.rar`可能是基础概念的介绍。通过阅读这些资料,你可以更全面...
综上所述,Oracle DBA需要掌握Oracle数据库的架构、管理方法,包括创建和维护数据库、实例管理、控制文件与重做日志的维护、表空间和数据文件的管理、回滚段和用户权限的管理等,确保数据库系统的稳定、高效和安全...
- **表和索引设计**:了解如何根据业务需求合理设计表结构,选择合适的索引类型,以及何时使用分区和集群。 - **性能监控与调优**:学习使用Oracle的性能分析工具,如Explain Plan,以及如何调整数据库参数以优化...
这个过程由Oracle的查询优化器完成,它考虑了索引、表统计信息和数据库配置参数。了解执行计划可以帮助DBA识别性能瓶颈,通过调整索引、分区策略或者修改SQL语句来提升查询效率。 例如,通过EXPLAIN PLAN语句,我们...
良好的表结构设计,包括选择合适的数据类型、合理分区分区策略,以及有效的事务管理和并发控制,都能显著提升性能。此外,索引的使用和管理是优化查询性能的关键,正确的索引策略能加快数据检索速度,减少全表扫描。...
"Oracle_Concept_11gR2_EN_CH.pdf"这份文档很可能是对这些概念的详细解释,包括中英文对照,对于学习和理解Oracle数据库具有很高的参考价值。如果你正在寻找19C的资料,尽管11GR2可能稍显过时,但它仍然能提供基础...
在"ch13.pdf"章节中,可能详细讲解了SQL查询语言,这是与Oracle数据库交互的基础。读者将学习到如何编写SELECT语句进行数据检索,使用JOIN操作连接多个表,以及如何使用子查询和聚合函数进行复杂的数据分析。此外,...
第六章(ch6.doc)可能涵盖数据库性能优化,包括SQL查询优化、索引的使用、表分区技术,以及如何使用Oracle的性能监控工具,如SQL*Plus、 tkprof 和AWR(自动工作负载仓库)报告来识别和解决性能问题。 附录可能...
4. **Oracle 优化**:Oracle数据库优化是提升系统性能的关键,包括SQL查询优化、索引策略、表和索引的分区、物理存储结构的优化、数据库参数调整等。理解并运用Oracle的自动优化器(CBO)和执行计划,学会使用...