db2数据库基础知识

1,db2数据库特点

(1)具有很好的并行性(DB2把数据库管理扩充到了并行的,多节点的环境;数据库分区是数据库的一部分,包含自己的数据,索引,配置文件和事务日志;
数据库分区有时被称为节点)。
(2)获得最高认证级别的ISO标准认证。
(3)性能较高,适用于数据仓库和在线事物处理。
(4)跨平台,多层结构,支持ODBC,JDBC等客户。
(5)操作简单,同时提供GUI和命令行,在windowsNT和unix下的操作相同。
(6)在巨型企业得到广泛的运用,向下兼容性好,风险小。
(7)能够在所有主流平台上运行,最适于海量数据处理。

2,db2数据库的特性

(1)完全Web使能的:可以利用HTTP来发送询问给服务器。
(2)高度可缩放和可靠:高负荷时可利用多处理器和大内存,可以跨服务器地分布数据库和数据负荷;能够以最小的数据丢失快速地恢复,提供多种备份策略。

3,实现储存过程

存储过程是存储在数据库中的一个预编译对象。这意味着过程是预编译的,可提供给各种应用执行。发送查询到服务器、分析和编译过程再不需要花费时间。
(1)特点:存储过程是SQL语句和控制流语句的一个集合或批量,它在一个名称下存储,按独立单元方式执行。它能帮助提高查询的性能。
(2)好处:
提高性能(应用不必重复地编译此过程)
减轻网络拥塞(为进行处理,应用不需要向服务器提交多个SQL语句)
一致性较好(由于过程作为单一控制点,在过程中定义的编码逻辑和SQL语句在所有应用中被一致地实现)
改善安全机制(用户可以被授予许可权来执行存储过程,尽管他们并不拥有这个过程)
(3)执行存储过程语句:call proc_name(param,…)
(4)RETURN关键字:允许存储过程把整型值返回给调用者。如果没有指定值,那么存储过程返回缺省值0或1,这依赖于存储过程的成功执行与否。RETURN value
(5)嵌套过程:可以执行或调用来自另一个过程的过程。

4,触发器

触发器:一个触发器是由SQL语句集组成的代码块,在响应某些动作时激活该语句集。一个触发器也可被解释为特定类型的存储过程,每当动作发生时执行该过程。
每当基础表中数据受到数据操纵语言(DML)语句——INSERT、UPDATE或DELETE的影响时,触发器就被激发。触发器帮助维持表中数据的一致、可靠和正确。
(1)触发器特性:
当任何数据修改语句被发出时,它就被自动激发。
在存储过程的情况下,它不被显式地调用和执行。
它防止了对数据的不正确、未授权的和不一致的改变。
它不能返回数据给用户。
触发器可最多嵌套。当一个触发器执行对另一个触发器初始化动作时触发器的嵌套就产生了。
(2)触发器和数据完整性:
触发器可用来确保和加强业务规则和数据完整性。业务规则是指确保业务平稳运转的组织政策。数据完整性是指数据的精确性和可靠性。
如果某种改变违反了引用完整性,那么所有这样的改变都被拒绝,因此所有试图改变数据库中的数据都被取消。
允许实施非常复杂的限制。
它可执行依赖于对表所作修改的结果的特定的动作。

5,实现处理事务和游标

(1)理解DB2中的上锁
共享锁:允许并发事务来读取资源。如果一个资源上有任何共享锁的话,其它的事务都不能修改该资源上的数据。一个共享锁在数据已被事务读取后释放资源。
更新锁:更新(U)锁,在功能上避免了常见形式的死锁发生。
互斥型锁:排它型锁(X),在功能上唯一地限制并发事务访问一个资源。用排它锁时没有任何其它的事务可以读取或者修改已上锁的数据。
意向锁:指示SQL Server要在层次结构较低的某个资源上获得一个共享或排它锁。
带有各种特性的意向锁包括意向共享(IS),意向排它(IX)和带有意向排它的共享锁(SIX)。
模式锁:当任何数据定义(DDL)操作在表上执行时,SQL Server考察模式修改(Sch-M)锁。当编译查询时,SQL Server考察模式稳定(Sch-S)锁。
死锁:DEADLOCK_PRIORITY命令可定制死锁。把某个会话的DEADLOCK_PRIORITY设置为LOW,使得要选的某个会话变成死锁受害者。
(2)游标
游标是一个在给定结果集中帮助访问和操纵数据的数据库对象。游标的主要好处是你可以逐行的处理数据。结果集被定义为从SELECT语句中获得的行的集合。
声明游标:DECLARE cursor_name [INSENSITIVE] [SCROLL] CURSOR FOR {select_statement} [FOR {READ ONLY | UPDATE [OF column_list]}]
INSENSITIVE:使结果集存储在tempdb数据库中,且不允许修改游标的结果集。
SCROLL:指出游标可以向前或向后定位以读入数据。只要游标不是用INSENSITIVE选项声明,所有随后的取数显示基础表所作的修改。
READ ONLY:防止结果集中的修改。
UPDATE [OF column_list]:定义游标内可更新的列。如果使用OF column_list选项,只有列出可被更新的列;否则,除非游标被定义为READ ONLY,所有列都可更新。
打开游标:OPEN cursor_name
取数据:FETCH [[NEXT | PRIOR | FIRST | LAST | ABSOLUTE n | RELATIVE n]] FROM cursor_name [INTO @variable_name [,…n]]
当一个FETCH语句执行时,一般认为游标定位在已被取到行的位置。被取到的行被称为当前行。0——成功执行了取数语句,-1——执行取数语句不成功, -2——被读取的行丢失
关闭游标:CLOSE cursor_name 除了游标再打开的情况外,不可以进行读取和修改。
解除分配游标:DEALLOCATE cursor_name 所有游标持有的资源都被释放。

6,缓冲池

(1)定义:缓冲池是从磁盘读取表和索引数据时,数据库管理器分配的用于高速缓存这些表或索引数据的主存储器区域。
(2)创建:CREATE BUFFERPOOL “BP04K_I1”

IMMEDIATE

ALL DBPARTITIONNUMS

SIZE 250

NUMBLOCKPAGES 0

PAGESIZE 32 K;
(3)修改:ALTER BUFFERPOOL SIZE

alter bufferpool IBMDEFAULTBP immediate size 100
(4)删除:删除缓冲池时,应确保没有任何表空间已指定给这些缓冲池。不能删除IBMDEFAULTBP缓冲池。

DROP BUFFERPOOL
(5)查看:select * from SYSCAT.BUFFERPOOLS;

7,表空间

(1)定义:表空间是一种存储结构,它包含表,索引,大对象和长型数据,表空间位于数据库分区组中。空间是数据库及存储在该数据库中的表之间的逻辑层。
表空间在数据库中创建,表在表空间中创建。
(2)DB2 的表空间按管理方式分为两种:系统管理空间(System Management Space,SMS)和数据库管理空间(Database Management Space,DMS)。 按类型分为:规则表空间、大对象表空间、系统临时表空间、用户临时表空间。
(3)好处:能够把数据合理的分布存储在不同的磁盘上或者存储在磁盘的不同位置上,有助于提高数据存取的效率。

8,db2数据库调优

(1)在where 语句后面字段不要用函数,这样导致字段不走索引
(2)一个sql语句不要写的太长,尽量分临时表,一步一步写。
(3)表不要建太多的索引
(4)修改生产字段 一定要记得 REORG ->RUNSTATS -> 否则容易产生一些莫名其妙的错误。
(5)游标使用 注意commit 和rollback
(6)case when的用法 coalesce(username,’’) value(username,’’)
(7)插入或者删除太慢,随时记得表维护
(8)动态sql能 ,自动选择最佳的执行计划。
(9)数据库优化命令:reorg、runstats 清除已delete的数据,优化数据结构

扩展知识:

数据仓库(Data Warehouse):是一个面向主题的(Subject Oriented)、集成的(Integrated)、相对稳定的(Non-Volatile)、
反映历史变化(Time Variant)的数据集合,用于支持管理决策(Decisionaking Support)。
ODS:是一个面向主题的、集成的、可变的、当前的细节数据集合,用于支持企业对于即时性的、操作性的、集成的全体信息的需求。 区别:ods是短期的实时的数据,供产品或者运营人员日常使用,而数据仓库是供战略决策使用的数据;ods是可以更新的数据,数据仓库是基本不更新的反应历史变化的数据,还有很多,这里就不一一列举了。

你可能感兴趣的:(db2数据库基础知识)