当前位置:文档之家› mysql优化,管理,维护

mysql优化,管理,维护

mysql优化,管理,维护
mysql优化,管理,维护

目录

第 1 章触发器 (4)

1.1 触发器概述 (4)

1.2 Syntax 语法 (5)

1.3 Syntax: Time 触发时间 (6)

1.4 Syntax: Event语法 (6)

1.5 Syntax: Table 语法表 (6)

1.6 Syntax: Granularity 语法触发间隔 (6)

1.7 Syntax: Statement 语法 (6)

第2 章表类型(存储引擎)的选择 (7)

2.1 Mysql 存储引擎概述 (7)

2.2 各种存储引擎的特性 (7)

2.3 如何选择合适的存储引擎 (8)

第 3 章索引的设计和使用 (9)

3.1 Mysql 索引概述 (9)

3.2 设计索引的原则 (9)

3.3 btree 索引与hash 索引 (10)

3.4 Mysql 如何使用索引 (11)

第 4 章锁机制和事务控制 (11)

4.1 如何加锁 (11)

4.2 死锁 (11)

4.3 事务控制 (11)

第5 章 SQL 优化 (16)

5.1 优化SQL 的一般步骤 (16)

5.1.1 通过show status 和应用特点了解各种SQL 的执行频率 (16)

5.1.2 定位执行效率较低的SQL 语句 (17)

5.1.3 通过EXPLAIN 分析低效SQL 的执行计划 (18)

5.1.4 确定问题,并采取相应的优化措施 (19)

5.2 索引问题 (19)

5.2.1 索引的存储分类 (19)

5.2.2 MySQL 如何使用索引 (20)

5.2.3 查看索引使用情况 (20)

5.3 两个简单实用的优化方法 (20)

5.3.1 定期分析表 (20)

5.3.2 使用optimize table (21)

5.4 常用SQL 的优化 (21)

5.4.1 大批量插入数据 (21)

5.4.2 优化insert 语句 (21)

5.4.3 优化group by 语句 (22)

5.4.4 优化order by 语句 (22)

5.4.5 优化join 语句 (22)

5.4.6 mysql 如何优化or 条件 (23)

5.4.7 查询优先还是更新(insert、update、delete)优先 (23)

5.4.8 使用SQL 提示 (24)

5.5 其他优化措施 (24)

第六章优化数据库对象 (25)

6.1 优化表的数据类型 (25)

6.2 通过拆分,提高表的访问效率 (25)

6.3 逆规范化 (25)

6.4 使用冗余统计表 (25)

6.5 选择更合适的表类型 (25)

第 7 章锁问题 (26)

7.1 获取锁等待情况 (26)

(26)

7.2 什么情况下使用表锁 (27)

7.3 什么情况下使用行锁 (27)

7.4 insert ...select ...带来的问题 . (27)

7.5 next-key 锁对并发插入的影响 (28)

7.6 隔离级别对并发插入的影响 (28)

7.7 如何减少锁冲突 (28)

第八章优化Mysql Server (29)

8.1 查看Mysql server 当前参数 (29)

8.2 影响Mysql 性能的重要参数 (29)

8.2.1 key_buffer_size 的设置 (29)

8.2.2 table_cache 的设置 (30)

8.2.3 innodb_buffer_pool_size 的设置 (31)

8.2.4 innodb_flush_log_at_trx_commit 的设置 (31)

8.2.5 innodb_additional_mem_pool_size (31)

8.2.6 innodb_table_locks (31)

8.2.7 innodb_lock_wait_timeout (32)

8.2.8 innodb_support_xa (32)

8.2.9 innodb_doublewrite: (32)

8.2.10 innodb_log_buffer_size: (32)

8.2.11 innodb_log_file_size: (32)

第九章应用优化 (32)

9.1 使用连接池 (32)

9.2 减少对Mysql 的访问 (32)

9.2.1 避免对同一数据做重复检索: (32)

9.2.2 使用mysql query cache: (32)

9.2.3 加cache 层: (33)

9.3 负载均衡 (33)

9.3.1 利用mysql 复制分流查询操作 (33)

9.3.2 采用分布式数据库架构: (34)

第十章 Mysql 日志管理 (34)

10.1 错误日志: (34)

10.2 BINLOG: (34)

10.3 查询日志 (35)

10.4 慢查询日志: (35)

第11 章数据备份与恢复 (35)

11.1 备份/恢复策略 (35)

11.2 冷备份 (35)

11.3 逻辑备份 (36)

11.4 单个表的备份 (36)

11.5 使用备份工具ibbackup (36)

11.6 时间点恢复 (37)

11.7 位置恢复 (37)

11.8 MyISAM 表修复 (38)

第 12 章数据库应急处理 (38)

12.1 一般处理流程 (38)

12.2 忘记root 密码 (38)

12.3 表损坏如何处理 (39)

12.4 MyISAM 表超过4G 无法访问 (39)

12.5 数据目录磁盘空间不足怎么办 (39)

12.6 如何禁止DNS 反向解析 (40)

第13 章 Mysql 管理中一些常用的命令和技巧 (40)

13.1 参数设置方法 (40)

13.2 mysql.sock 丢失后怎么连接数据库 (40)

13.3 同一台机器运行多个mysql (40)

13.4 查看用户权限 (41)

13.5 修改用户密码 (42)

13.6 怎样灵活的指定连接的主机 (43)

13.7 到底匹配哪个符合条件的用户 (43)

13.8 不进入mysql,怎样运行sql 语句 (44)

13.9 客户端怎么访问内网数据库 (45)

MYSQL数据库专题总结

————数据库优化,维护,管理,特殊技术分析第 1 章触发器

1.1触发器概述

先简单说说触发器的机制。每个触发器都会创建两个逻辑专用表:inserted表和deleted表,其结构跟被触发表的结构完全相同,执行后,这两个表都会被删除。执行insert插入语句时,inserted表存放要插入的所有行,执行delete删除操作时,deleted 表存放要删除的所有行,执行update更新操作相当于先执行一个delete操作再执行有个insert操作,原记录存放于deleted表新记录存放于inserted表。

触发器分after触发器和instead of触发器两种。

After触发器也叫For触发器,它会在触发insert、update或delete动作之后执行,也即它只有在已插入一行或是多行和所有约束已被处理且通过后才触发,并且AFTER 触发器只能对表起作用。

instead of触发器代替触发动作进行激发,如果一个表上有一个instead of触发器并在这个表上执行update操作,则update语句不会改变这个表中的数据。INSTEAD OF 触发器可以同时对表和视图起作用。

AFTER 触发器多用在动作必须在表中数据发生改变之后才执行后情情况,比如,AFTER 触发器可以用于将对数据作任何变动的日志记录在一个相对独立的审计表中。

INTEAD OF 触发器也能做同样的工作。但是INSTEAD OF 触发器在这个情况下的效率比较低,因为更新动作只能在将它发生的动作准确地记录在审计表之后才允许执行。一般来说,只要不影响数据的修改,AFTER 触发器比INSTEAD OF 触发器更有效率,但有时INSTEAD OF会更好些。

理论是枯燥的,对于初学者而言也是难懂的,通过一些实例会更有利于理解和消化。

1、更新触发

create trigger updateUser

on allUser

after update

as

update partUser

set usr_Name=(select usr_Name from inserted), usr_Pwd=(select usr_pwd from inserted) where usr_ID=(select usr_id from inserted)

2、不允许修改用户名

use 数据库名

go

create trigger tr

on 表名

for update

思考题:为什么用触发器?

MySQL早期版本的用户长期有需要触发器的要求。

我们曾经许诺支持所有ANSI 标准的特性。

您可以使用它来检查或预防坏的数据进入数据库。

您可以改变或者取消INSERT, UPDATE以及DELETE语句。

您可以在一个会话中监视数据改变的动作。

“MySQL 存储过程”,

那么大家都应该知道MySQL至此存储过程和函数,那是很重要的知识,因为在触发器中

你可以使用在函数中使用的语句。特别举个例子:

复合语句(BEGIN / END) 是合法的.

流控制(Flow-of-control)语句(IF, CASE, WHILE, LOOP, WHILE, REPEAT, LEAVE,

ITERATE) 也是合法的.

变量声明(DECLARE) 以及指派(SET) 是合法的.

允许条件声明.

异常处理声明也是允许的.

但是在这里要记住函数有受限条件: 不能在函数中访问表. 因此在函数中使用以下语句是非法的。

ALTER 'CACHE INDEX' CALL COMMIT CREATE DELETE

DROP 'FLUSH PRIVILEGES' GRANT INSERT KILL

LOCK OPTIMIZE REPAIR REPLACE REVOKE

ROLLBACK SAVEPOINT 'SELECT FROM table'

'SET system variable' 'SET TRANSACTION'

SHOW 'START TRANSACTION' TRUNCATE UPDATE

在触发器中也有完全一样的限制.

触发器相对而言比较新,因此会有(bugs)缺陷. 所以我在这里给大家警告,就像我在存储过程书

中所说那样. 不要在含有重要数据的数据库中使用这个触发器,如果需要的话在一些以测试为目的

的数据库上使用,同时在你对表创建触发器时确认这些数据库是默认的。

1.2 Syntax 语法

1. Syntax: Name 语法语法语法语法:::命名规则:命名规则命名规则命名规则CREATE TRIGGER <触发器名称> <--

{ BEFORE | AFTER }

{ INSERT | UPDATE | DELETE }

ON <表名称>

FOR EACH ROW

<触发器SQL语句>

触发器必须有名字,最多64个字符,可能后面会附有分隔符. 它和MySQL中其他对象的命名方式

基本相象.

这里我有个习惯:就是用表的名字+'_'+触发器类型的缩写. 因此如果是表t26,触发

器是在事件

UPDATE (参考下面的点(2)和(3))之前(BEFORE)的,那么它的名字就是t26_bu 。

1.3 Syntax: Time 触发时间

CREATE TRIGGER <触发器名称>

{ BEFORE | AFTER } <--

{ INSERT | UPDATE | DELETE }

ON <表名称>

FOR EACH ROW

<触发的SQL语句>

触发器有执行的时间设置:可以设置为事件发生前或后。

1.4 Syntax: Event语法

CREATE TRIGGER <触发器名称>

{ BEFORE | AFTER }

{ INSERT | UPDATE | DELETE } <--

ON <表名称>

FOR EACH ROW

<触发的SQL语句>

同样也能设定触发的事件:它们可以在执行insert、update或delete的过程中触发。

1.5 Syntax: Table 语法表

CREATE TRIGGER <触发器名称>

{ BEFORE | AFTER }

{ INSERT | UPDATE | DELET ON <表名称> <--

FOR EACH ROW

<触发的SQL语句>

触发器是属于某一个表的: 当在这个表上执行插入、更新或删除操作的时候就导致触发器的激活. 我们不能给同一张表的同一个事件安排两个触发器。

1.6 Syntax: Granularity 语法触发间隔

CREATE TRIGGER <触发器名称>

{ BEFORE | AFTER }

{ INSERT | UPDATE | DELETE }

ON <表名称>

FOREACHROW

<--

<触发的SQL语句>

触发器的执行间隔:FOR EACH ROW 子句通知触发器每隔一行执行一次动作,而不是对整个表执行一次。

1.7 Syntax: Statement 语法

CREATE TRIGGER <触发器名称>

{ BEFORE | AFTER }

{ INSERT | UPDATE | DELETE }

ON <表名称>

FOR EACH ROW

触发的SQL语句

触发器包含所要触发的SQL语句:这里的语句可以是任何合法的语句,包括复合语句,但是这里的语句受的限制和函数的一样。

第2 章表类型(存储引擎)的选择

2.1 Mysql 存储引擎概述

mysql支持多种存储引擎,在处理不同类型的应用时,可以通过选择使用不同的存储引擎提高应用的效率,或者提供灵活的存储。

mysql的存储引擎包括:MyISAM、InnoDB、BDB、MEMORY、MERGE、EXAMPLE、NDB Cluster、ARCHIVE、CSV、BLACKHOLE、FEDERATED等,其中InnoDB和BDB提供事务安全表,其他存储引擎都是非事务安全表.

2.2 各种存储引擎的特性

下面我们重点介绍几种常用的存储引擎并对比各个存储引擎之间的区别和推荐使用方式。

最常使用的2 种存储引擎:

1. Myisam是Mysql的默认存储引擎,当create创建新表时,未指定新表的存储引擎时,

默认使用Myisam。每个MyISAM在磁盘上存储成三个文件。文件名都和表名相同,扩展名分别是.frm(存储表定义)、.MYD (MYData,存储数据)、.MYI (MYIndex,存储索引)。数据文件和索引文件可以放置在不同的目录,平均分布io,获得更快的速度。

2. InnoDB 存储引擎提供了具有提交、回滚和崩溃恢复能力的事务安全。但是对Myisam

的存储引擎,InnoDB 写的处理效率差一些并且会占用更多的磁盘空间以保留数据和索引。

2.3 如何选择合适的存储引擎

选择标准: 根据应用特点选择合适的存储引擎,对于复杂的应用系统可以根据实际选择多种存储引擎进行组合.

下面是常用存储引擎的适用环境:

1. MyISAM:默认的MySQL 插件式存储引擎,它是在Web、数据仓储和其他应用环境下最

常使用的存储引擎之一锁机制表锁页锁表锁行锁行锁

B 树索引支持支持支持支持

哈希索引支持支持

全文索引支持

集群索引支持

数据缓存支持支持

索引缓存支持支持支持

数据可压缩支持支持

空间使用低低N/A 高非常低

内存使用低低中等高低

批量插入的速度高高高低非常高

支持外键支持

网易技术部13

2. InnoDB:用于事务处理应用程序,具有众多特性,包括ACID 事务支持。

3. Memory:将所有数据保存在RAM 中,在需要快速查找引用和其他类似数据的环境下,

可提供极快的访问。

4. Merge:允许MySQL DBA 或开发人员将一系列等同的MyISAM 表以逻辑方式组合在一

起,并作为1 个对象引用它们。对于诸如数据仓储等VLDB 环境十分适合。

第 3 章索引的设计和使用

3.1 Mysql 索引概述

所有MySQL 列类型可以被索引。对相关列使用索引是提高SELECT 操作性能的最佳途径。根据存储引擎定义每个表的最大索引数和最大索引长度。所有存储引擎支持每个表至少16 个索引,总索引长度至少为256 字节。大多数存储引擎有更高的限制。

在MySQL 5.1 中,对于MyISAM 和InnoDB 表,前缀可以达到1000 字节长。请注意前

缀的限制应以字节为单位进行测量,而CREATE TABLE 语句中的前缀长度解释为字符数。当为使用多字节字符集的列指定前缀长度时一定要加以考虑。

还可以创建FULLTEXT 索引。该索引可以用于全文搜索。只有MyISAM 存储引擎支持FULLTEXT 索引,并且只为CHAR、VARCHAR 和TEXT 列。索引总是对整个列进行,不支持局部(前缀)索引。也可以为空间列类型创建索引。只有MyISAM 存储引擎支持空间类型。空间索引使用R-树。默认情况MEMORY(HEAP)存储引擎使用hash 索引,但也支持B-树索引。

3.2 设计索引的原则

1. 搜索的索引列,不一定是所要选择的列。换句话说,最适合索引的列是出现在WHERE

句中的列,或连接子句中指定的列,而不是出现在SELECT 关键字后的选择列表中的列。

2. 使用惟一索引。考虑某列中值的分布。对于惟一值的列,索引的效果最好,而具有

多个

重复值的列,其索引效果最差。例如,存放年龄的列具有不同值,很容易区分各行。

而用来记录性别的列,只含有“ M”和“F”,则对此列进行索引没有多大用处(不管搜索哪个值,都会得出大约一半的行)

3. 使用短索引。如果对串列进行索引,应该指定一个前缀长度,只要有可能就应该这

样做。

例如,如果有一个CHAR(200) 列,如果在前10 个或20 个字符内,多数值是惟一的,那么就不要对整个列进行索引。对前10 个或20 个字符进行索引能够节省大量索引空

间,也可能会使查询更快。较小的索引涉及的磁盘I/O 较少,较短的值比较起来更快。

更为重要的是,对于较短的键值,索引高速缓存中的块能容纳更多的键值,因此,MySQL 也可以在内存中容纳更多的值。这增加了找到行而不用读取索引中较多块的可能性。

(当然,应该利用一些常识。如仅用列值的第一个字符进行索引是不可能有多大好处的,https://www.doczj.com/doc/cf2662390.html,

网易技术部20

因为这个索引中不会有许多不同的值。)

4. 利用最左前缀。在创建一个n 列的索引时,实际是创建了MySQL 可利用的n 个索引。

多列索引可起几个索引的作用,因为可利用索引中最左边的列集来匹配行。这样的列集称为最左前缀。(这与索引一个列的前缀不同,索引一个列的前缀是利用该的前n 个字符作为索引值。)

5. 不要过度索引。不要以为索引“越多越好”,什么东西都用索引是错的。每个额外

的索

引都要占用额外的磁盘空间,并降低写操作的性能,这一点我们前面已经介绍过。在修改表的内容时,索引必须进行更新,有时可能需要重构,因此,索引越多,所花的时间越长。如果有一个索引很少利用或从不使用,那么会不必要地减缓表的修改速度。

此外,MySQL 在生成一个执行计划时,要考虑各个索引,这也要费时间。创建多余的索引给查询优化带来了更多的工作。索引太多,也可能会使MySQL 选择不到所要使用的最好索引。只保持所需的索引有利于查询优化。如果想给已索引的表增加索引,应该考虑所要增加的索引是否是现有多列索引的最左索引。如果是,则就不要费力去增加这个索引了,因为已经有了。

6. 考虑在列上进行的比较类型。索引可用于“ <”、“ < = ”、“ = ”、“ > =”、

“ >

”和BETWEEN 运算。在模式具有一个直接量前缀时,索引也用于LIKE 运算。如果只将某个列用于其他类型的运算时(如STRCMP( )),对其进行索引没有价值。

3.3 btree 索引与hash 索引

对于BTREE 和HASH 索引,当使用=、<=>、IN、IS NULL 或者IS NOT NULL 操作符时,关键元素与常量值的比较关系对应一个范围条件。Hash 索引还有一些其它特征:它们只用

于使用=或<=>操作符的等式比较(但很快)。优化器不能使用hash 索引来加速ORDER BY 操作。

(该类索引不能用来按顺序搜索下一个条目)。MySQL 不能确定在两个值之间大约有多少行

(这被范围优化器用来确定使用哪个索引)。如果你将一个MyISAM 表改为hash-索引的MEMORY

表,会影响一些查询。只能使用整个关键字来搜索一行。(用B-树索引,任何关键字的最左面的前缀可用来找到行)。

对于BTREE 索引,当使用>、<、>=、<=、BETWEEN、!=或者<>,或者LIKE 'pattern'(其中'pattern'不以通配符开始)操作符时,关键元素与常量值的比较关系对应一个范围条件。

“常量值”系指:查询字符串中的常量、同一联接中的const 或system 表中的列、无关联子查询的结果、完全从前面类型的子表达式组成的表达式

下面是一些WHERE 子句中有范围条件的查询的例子:

下列范围查询适用于btree 索引和hash 索引

SELECT * FROM t1 WHERE key_col = 1 OR key_col IN (15,18,20);

下列范围查询适用于btree 索引

SELECT * FROM t1 WHERE key_col > 1 AND key_col < 10;

SELECT * FROM t1 WHERE key_col LIKE 'ab%' OR key_col BETWEEN 'bar' AND

'foo';

3.4 Mysql 如何使用索引

索引用于快速找出在某个列中有一特定值的行。不使用索引,MySQL 必须从第1 条记录开始然后读完整个表直到找出相关的行。表越大,花费的时间越多。如果表中查询的列有一个索引,MySQL 能快速到达一个位置去搜寻到数据文件的中间,没有必要看所有数据。如果一个表有1000 行,这比顺序读取至少快100 倍。注意如果你需要访问大部分行,顺序读取要快得多,因为此时我们避免磁盘搜索。

大多数MySQL 索引(PRIMARY KEY、UNIQUE、INDEX 和FULLTEXT)在B 树中存储。只是空间列类型的索引使用R-树,并且MEMORY 表还支持hash 索引。

关于什么情况下数据库会使用索引以及什么情况下数据库不会使用索引的详细解释请看优化篇的相关章节,这里就不再累述。

第 4 章锁机制和事务控制

4.1 如何加锁

锁定表的语法:

LOCK TABLES

tbl_name [AS alias] {READ [LOCAL] | [LOW_PRIORITY] WRITE}

[, tbl_name [AS alias] {READ [LOCAL] | [LOW_PRIORITY] WRITE}] ...

解锁语法:

UNLOCK TABLES

innodb 的存储引擎提供行级锁,支持共享锁和排他锁两种锁定模式,以及四种不同的

隔离级别。

4.2 死锁

InnoDB自动检测事务的死锁,并回滚一个或几个事务来防止死锁。InnoDB不能在MySQL LOCK TABLES设定表锁定的地方或者涉及InnoDB之外的存储引擎设置锁定的地方检测死锁。你必须通过设定innodb_lock_wait_timeout系统变量的值来解决这些情况。如果要依靠锁等待超时来解决死锁问题,对于更新事务密集的应用,将有可能导致大量事务的锁等待,导致系统异常,所以不推荐在一个事务中混合更新不同存储类型的表,也不推荐相同类型的表采用不同的锁定方式加锁。

4.3 事务控制

MySQL通过SET AUTOCOMMIT, START TRANSACTION, COMMIT和ROLLBACK等语句支持本地

事务。

语法:

START TRANSACTION | BEGIN [WORK]

COMMIT [WORK] [AND [NO] CHAIN] [[NO] RELEASE]

ROLLBACK [WORK] [AND [NO] CHAIN] [[NO] RELEASE]

SET AUTOCOMMIT = {0 | 1}

默认情况下,mysql是autocommit的,如果需要通过明确的commit和rollback来提交和

回滚事务,那么需要通过明确的事务控制命令来开始事务,这是和oracle的事务管理明显不同的地方,如果应用是从oracle数据库迁移到mysql数据库,则需要确保应用中是否对事务进行了明确的管理。

START TRANSACTION或BEGIN语句可以开始一项新的事务。

https://www.doczj.com/doc/cf2662390.html,

网易技术部23

COMMIT和ROLLBACK用来提交或者回滚事务。

CHAIN和RELEASE子句分别用来定义在事务提交或者回滚之后的操作,chain会立即启动

一个新事物,并且和刚才的事务具有相同的隔离级别,release则会断开和客户端的连接。SET AUTOCOMMIT可以修改当前连接的提交方式,如果设置了SET AUTOCOMMIT=0,则设置

之后的所有事务都需要通过明确的命令进行提交或者回滚。

如果我们只是对某些语句需要进行事务控制,则使用START TRANSACTION开始一个事务

比较方便,这样事务结束之后可以自动回到自动提交的方式,如果我们希望我们所有的事务都不是自动提交的,那么通过修改AUTOCOMMIT来控制事务比较方便,这样不用在每个事务开始的时候再执行START TRANSACTION

第5 章 SQL 优化

5.1 优化SQL 的一般步骤

5.1.1 通过show status 和应用特点了解各种SQL 的执行频率

通过SHOW STATUS 可以提供服务器状态信息,也可以使用mysqladmin extendedstatus 命令获得。SHOW STATUS 可以根据需要显示session 级别的统计结果和global

级别的统计结果。

以下几个参数对Myisam 和Innodb 存储引擎都计数:

1. Com_select 执行select 操作的次数,一次查询只累加1;

2. Com_insert 执行insert 操作的次数,对于批量插入的insert 操作,只累加一次;

3. Com_update 执行update 操作的次数;

4. Com_delete 执行delete 操作的次数;

以下几个参数是针对Innodb 存储引擎计数的,累加的算法也略有不同:

1. Innodb_rows_read select 查询返回的行数;

2. Innodb_rows_inserted 执行Insert 操作插入的行数;

3. Innodb_rows_updated 执行update 操作更新的行数;

4. Innodb_rows_deleted 执行delete 操作删除的行数;

通过以上几个参数,可以很容易的了解当前数据库的应用是以插入更新为主还是

以查询操作为主,以及各种类型的SQL 大致的执行比例是多少。对于更新操作的计数,是对执行次数的计数,不论提交还是回滚都会累加。

对于事务型的应用,通过Com_commit 和Com_rollback 可以了解事务提交和回滚

的情况,对于回滚操作非常频繁的数据库,可能意味着应用编写存在问题。

此外,以下几个参数便于我们了解数据库的基本情况:

1. Connections 试图连接Mysql 服务器的次数

2. Uptime 服务器工作时间

3. Slow_queries 慢查询的次数

5.1.2 定位执行效率较低的SQL 语句

通过以上步骤查询到效率低的SQL 后,我们可以通过explain 或者desc 获取

MySQL 如何执行SELECT 语句的信息,包括select 语句执行过程表如何连接和连接的次序。

explain 可以知道什么时候必须为表加入索引以得到一个使用索引来寻找记录

的更快的SELECT。

mysql> explain select sum(moneys) from sales a,companys b where https://www.doczj.com/doc/cf2662390.html,pany_id = b.id and a.year = 2006;

select_type: select 类型

table:输出结果集的表

type:表示表的连接类型

当表中仅有一行是type的值为system是最佳的连接类型;

当select操作中使用索引进行表连接时type的值为ref;

当select的表连接没有使用索引时,经常会看到type的值为ALL,表示对该表

进行了全表扫描,这时需要考虑通过创建索引来提高表连接的效率。

possible_keys:表示查询时,可以使用的索引列.

key:表示使用的索引

key_len:索引长度

rows:扫描范围

Extra:执行情况的说明和描述

5.1.3 通过EXPLAIN 分析低效SQL 的执行计划

通过以上步骤查询到效率低的SQL 后,我们可以通过explain 或者desc 获取MySQL 如何执行SELECT 语句的信息,包括select 语句执行过程表如何连接和连接的次序。

explain 可以知道什么时候必须为表加入索引以得到一个使用索引来寻找记录

的更快的SELECT。

select_type: select 类型

table:输出结果集的表

type:表示表的连接类型

当表中仅有一行是type的值为system是最佳的连接类型;

当select操作中使用索引进行表连接时type的值为ref;

当select的表连接没有使用索引时,经常会看到type的值为ALL,表示对该表

进行了全表扫描,这时需要考虑通过创建索引来提高表连接的效率。

possible_keys:表示查询时,可以使用的索引列.

key:表示使用的索引

key_len:索引长度

rows:扫描范围

Extra:执行情况的说明和描述

5.1.4 确定问题,并采取相应的优化措施

经过以上步骤,基本可以确认问题出现的原因,可以根据情况采取相应的措施,

进行优化提高执行的效率。

例如上面的例子,我们确认是对a 表的全表扫描导致效率的不理想,我们对a

表的year 字段创建了索引,查询需要扫描的行数明显较少。

mysql> explain select sum(moneys) from sales a,companys b where https://www.doczj.com/doc/cf2662390.html,pany_id = b.id and a.year = 2006;

5.2 索引问题

5.2.1 索引的存储分类

myisam 表的数据文件和索引文件是自动分开的;innodb 的数据和索引是存储在

同一个表空间里面,但可以有多个文件组成。

创建索引语法如下:

CREATE [UNIQUE|FULLTEXT|SPATIAL] INDEX index_name

[USING index_type]

ON tbl_name (index_col_name,...)

index_col_name:

col_name [(length)] [ASC | DESC]

索引的存储类型目前只有两种(btree 和hash),具体和表的模式相关:

myisam btree

innodb btree

memory/heap hash,btree

https://www.doczj.com/doc/cf2662390.html,

网易技术部50

mysql 目前不支持函数索引,只能对列的前一部分(length)进行索引,例:

create index ind_test on table1(name(5)),

对于char 和varchar 列,使用前缀索引将大大节省空间。

5.2.2 MySQL 如何使用索引

索引用于快速找出在某个列中有一特定值的行。对相关列使用索引是提高

SELECT 操作性能的最佳途径。

查询要使用索引最主要的条件是查询条件中需要使用索引关键字,如果是多列索

引,那么只有查询条件使用了多列关键字最左边的前缀时,才可以使用索引,否则将

不能使用索引。

下列情况下,Mysql 不会使用已有的索引:

1. 如果mysql 估计使用索引比全表扫描更慢,则不使用索引。例如:如果key_part1

均匀分布在1 和100 之间,下列查询中使用索引就不是很好:

SELECT * FROM table_name where key_part1 > 1 and key_part1 < 90

2. 如果使用heap 表并且where 条件中不用=索引列,其他> 、<、>=、<=均不使用

索引;

3. 如果不是索引列的第一部分;

4. 如果like 是以%开始;

5. 对where 后边条件为字符串的一定要加引号,字符串如果为数字mysql 会自动转为

字符串,但是不使用索引

5.2.3 查看索引使用情况

如果索引正在工作,Handler_read_key 的值将很高,这个值代表了一个行被索

引值读的次数,很低的值表明增加索引得到的性能改善不高,因为索引并不经常使用。Handler_read_rnd_next 的值高则意味着查询运行低效,并且应该建立索引补

救。这个值的含义是在数据文件中读下一行的请求数。如果你正进行大量的表扫描,

该值较高。通常说明表索引不正确或写入的查询没有利用索引。

语法:

mysql> show status like 'Handler_read%';

5.3 两个简单实用的优化方法

5.3.1 定期分析表

ANALYZE TABLE

语法:

ANALYZE [LOCAL | NO_WRITE_TO_BINLOG] TABLE tbl_name [, tbl_name] ...

本语句用于分析和存储表的关键字分布。在分析期间,使用一个读取锁定对表进行锁定。这对于MyISAM, BDB 和InnoDB 表有作用。对于MyISAM 表,本语句与使用myisamchk -a 相当。

CHECK TABLE

语法:

CHECK TABLE tbl_name [, tbl_name] ... [option] ...

option = {QUICK | FAST | MEDIUM | EXTENDED | CHANGED}

检查一个或多个表是否有错误。CHECK TABLE 对MyISAM 和InnoDB 表有作用。对于MyISAM 表,关键字统计数据被更新。

CHECK TABLE 也可以检查视图是否有错误,比如在视图定义中被引用的表已不存在。CHECKSUM TABLE

语法:

数据库管理与维护的复习要点

第一章 1、什么是数据库,数据库的特点,数据库管理技术的发展阶段。 2、DB、DBA、DBMS分别表示什么;其中哪个是位于用户与操作系统之间的一层数据管 理软件,它属于系统软件,它为用户或应用程序提供访问数据库的方法。数据库在建立、使用和维护时由其统一管理、统一控制。DBMS的职能 3、概念模型最常用的是实体—联系方法有哪3种基本图素,实体间的联系可分为什么? 例如:课程和学生的对应关系。 4、概念结构设计的主要工具模型是E-R模型,而E-R模型分别用什么图形表示, E-R 模型转换成关系模式进行的规范化处理,一般达到3NF即可,那么学生(学号,姓名,课程号,系号,系名,成绩),为消除数据冗余如何分解。 5、数据库模型(结构模型)有哪些?用树形结构来表示实体之间关系的结构数据模型 是层次模型,数据模型中用二维表结构来存储数据的是关系模型,目前关系模型数据库模型是已逐渐淘汰了网状数据库和层次数据库模型上,成为当今最为流行的商用数据库系统。 6、数据库系统的三级模式结构是哪三个。 7、通常将数据库的设计分为哪4个设计阶段,每个阶段什么设计,成果是什么; 8、练习 1)、什么是数据库,数据库与DBMS之间有什么区别? 2)、什么是关系模型的外键,它有什么作用? 5)、什么是关系模型,有哪些特点? 6)、试描述数据库的设计步骤? 7)、数据库管理系统通常由哪些部分组成? 8)、数据库系统(DBS)有哪些组成,以及他们之间的关系? 9)、DBMS的三大语言(DDL、DML、DCL)分别有哪些。 第二章 1、SQL server2005数据库管理软件版本,以及支持的操作系统 第三章、六章 1、SQL server数据库文件中由数据文件和事务日志文件,扩展名是什么,分别存储什 么样的内容,一个数据库可以包含多个事务日志文件,但只能包含一个主数据库文件。 2、SQL Server的系统数据库以及每个数据库的功能是什么,例如储存SQL Server 系 统的所有临时表、临时存储过程的是哪个,保存系统配置、服务器配置等信息的是哪个。 3、在SQL server数据库的维护主要有附加数据、分离数据、联机、脱机、收宿等管理。 4、SQL server中常用数据类型有哪些,分别占用多少存储空间 5、SQLserver数据库系统标识符有哪些组成并判断哪些合法[my delete]、_mybase 、 $money 、trigger1。 6、在SQL Server数据库系统中创建表或修改表结构时可以使用Identity(n,m)属性 实现序列编号,其中n表示序列的起点,而m表示序列的种子增量。 7、数据库完整性包括哪些。SQL server有哪些约束,每种约束的关键字是什么以及在 创建表或修改表时怎么添加约束,例如参照完整性是用Foreign key来实现、Primary key和Unique是实体完整性以及之间的区别、Check 。 8、创建表结构、修改表、删除表结构:例如创建员工表,分别有员工编号、员工姓名、 员工工龄、领导编号等列,其中员工编号是主键,其值产生个连续的序列,并将领导编号设置外键,引用的主键是员工编号;创建学生表(student)时,将学生的性别(sex)取值只为“男”或“女”;修改学生表,性别(sex)添加约束,其作用是性别的值只能是

数据库日常维护工作

数据库日常维护工作是系统管理员的重要职责。其内容主要包括以下几个部分: 一、备份系统数据 SYBASE 系统的备份与恢复机制保证了在系统失败时重新获取数据的可能性。SQL Server 提供了两种不同类型的恢复机制:一类是系统自动完成的恢复,这种措施在每次系统启动时都自动进行,保证了在系统瘫痪前完成的事务都写到数据库设备上,而未完成的事务都被回退;另一类是人工完成的恢复,这是通过 DUMP 和 LOAD 命令来执行人工备份和恢复工作。因此定期备份事务日志和数据库是一项十分重要的日常维护工作。 1、备份数据库 每一个数据库都应在创建之后卸出,从而提供一个装入基点。在此之后按排定的时间周期表卸出。比如每周五卸出数据库。对一般数据库系统卸出数据库周期建议为每周一次。 除了按计划周期卸出数据库之外,还需在每次运行没有日志的操作后卸出数据库。例如:·每次强制地运行了 DUMP TRAN WITH NO_LOG (因为数据库的磁盘空溢出); ·每次用 sp_dboption 允许 select into/bulkcopy 做快速拷贝,或用 SELECT INTO 命令创建一个永久性的表,或使用了 WRITETEXT 命令。 卸出数据库的命令为: DUMP DATABASE database_name TO dump_device database_name 是要卸出的数据库名称,dump_device 是卸出设备的名称。用系统过程 sp_helpdevice 可以获得设备的信息。 下面一条命令用来卸出数据库 my_db : DUMP DATABASE my_db TO db_bk_dev 2、备份事务日志 如果事务日志与数据库放在同一个设备上,则事务日志不应与数据库分开备份。master 数据库和小于 4M 的用户数据库就是这种情况。一般数据库系统的数据库和日志分别放在不同的设备上,因此,可以用 DUMP TRAN 命令单独备份日志。 备份事务日志的周期直接影响数据的恢复程度,因此建议每天备份。 备份事务日志的命令格式为: DUMP TRANsaction database_name [TO dump_device] [WITH TRUNCATE_ONL Y|WITH NO_LOG|WITH NO_TRUNCA TE] 其中 database_name 是要备份事务的数据库名称,dump_device 是备份设备名称,仅当包含了 WITH TRUNCA TE_ONL Y 或 WITH NO_LOG 子句时,才可以备份到设备。 注意:如果总是用 DUMP DA TEBASE (备份数据库及其日志),而不用 DUMP TRAN ,事务日志将不会刷新,而变得非常庞大。

Oracle数据库日常维护工作

文档编号
Oracle 数据库日常维护工作
凌群电脑有限公司 凌群电脑有限公司 2004 年 12 月 15 日

数据库日常维护工作》 《Oracle 数据库日常维护工作》

1.1 1.2 1.3 1.4 1.5 1.6

1. DBA 日常维护工作 ..................................................................................................................... 3 检查已经打开的所有实例 .................................................................................................... 3 检查最新的警告日志 ............................................................................................................ 7 检查数据库备份是否正确 .................................................................................................... 8 检查备份到磁带中的文件是否正确 .................................................................................... 9 检查数据库的性能是否合理,系统资源是否充足 ............................................................ 9 仔细阅读 ORACLE 标准文档 ............................................................................................... 10
2.晚间维护工作 晚间维护工作.............................................................................................................................. 10 晚间维护工作 2.1 收集相关表的统计数据 ....................................................................................................... 10 3.每周维护工作 每周维护工作.............................................................................................................................. 10 每周维护工作 3.1 检查异常的对象................................................................................................................... 10 3.1.1 检查现有的 NEXT_EXTENT 情况:............................................................................ 10 3.1.2 检查已有的 EXTENTS: .............................................................................................. 11 3.1.3 查看哪些表没有主键 .................................................................................................... 11 3.1.4 查找哪些主键是没有发挥作用的 ................................................................................ 12 3.1.5 所有作索引的主键都应是唯一的 ................................................................................ 12 3.2 检查是否有不安全的问题 ................................................................................................... 12 3.3 检查是否有错误 SQL*NET 日志 ....................................................................................... 13 3.4 归档当前告警日志 ............................................................................................................... 13 3.5 访问供应商站点................................................................................................................... 13 4.月维护工作 月维护工作.................................................................................................................................. 13 月维护工作 4.1 检查是否有异常的空间增长 ............................................................................................... 13 4.2 回顾以前数据库性能优化的调整 ....................................................................................... 14 4.3 检查 IO 瓶颈 ........................................................................................................................ 14 4.4 检查碎片的问题(8I 系统) ............................................................................................... 15
2

ORACLE数据库日常维护与管理手册

全球眼?(MEGAEYES)网络图像管理系统2.0 ORACLE日常维护与管理手册 北京互信互通信息技术有限公司 2004-08-08

目录 全球眼?(MEGAEYES)网络图像管理系统2.0 (1) 1引言 (3) 1.1 目的 (3) 1.2 范围 (3) 1.3 参考资料 (3) 2日常维护与管理说明 (3) 2.1 运行环境 (3) 2.1.1硬件环境 (3) 2.1.2软件环境 (3) 2.2 数据库日常维护 (4) 2.2.1数据库初始设置 (4) 2.2.2每日工作内容 (5) 2.2.3每周工作内容 (6) 2.2.4每月工作内容 (7)

1引言 1.1目的 对于重要的商业系统来说,数据库系统的正常运行是保证商业应用平稳运行的关键。但是数据库在运行过程中可能会因为种种原因发生问题。这时,数据库的管理与日常维护工作将变得尤为重要。 为了指导数据库管理员做好日常维护工作,保证数据库系统的正常运行,特制定本文档。当然,数据库的日常维护是复杂和繁琐的,本文仅涉及一些常见的数据库日常维护的内容,在实际工作中,数据库管理员还需要做更多的工作。 1.2范围 本文档使用的人员:数据库维护管理人员和相关人员。 本文档涉及内容:oracle数据库的日常维护与管理解决方案。 1.3参考资料 中国电信网络视频监控技术(暂行)规范 2日常维护与管理说明 2.1运行环境 程序的运行环境包括硬件运行环境和软件运行环境。 2.1.1硬件环境 ◆CPU类型:Intel及其兼容系列CPU ◆内存容量:剩余内存要达2G以上 ◆硬盘容量:剩余硬盘容量要达1G以上 ◆网卡类型:100M网卡 2.1.2软件环境 ◆操作系统:RedHat Linux AS 3.0 ◆数据库:Oracle9i Database Release 2 (9.2.0.4.0) for Linux x86

谈网络数据库的安全管理与维护

谈网络数据库的安全管理与维护 摘要科技的不断进步,促使各个领域均开始使用计算机,并对行业发展做出巨大的贡献。网络上进行的所有活动,均离不开数据的重要支撑。怎样保障网络数据的完好性、安全性,如何对网络数据库进行优化管理,这是很多人均会去思考的问题。对网络数据库来说,做好安全管理,创新管理技术,处理好安全方面的漏洞,该项工作极为迫切。 关键词计算机网络数据库;安全管理;维护;探讨 1 数据库的含义 数据库是一个很复杂的系统,涉及面很广.难以用简练的语官准现地概括其全部特征。顾名思义,数据库是用来贮存数据的平台,其所具有的主要特点是数据并非存贮在空间或者容器中,而是放在诸如磁盘等计算机的外设存储器中,并且其存放具有一定的组织性[1]。对数据的管理以及存取利用则是通过相应的管理软件以及管理系统完成。所以这里我们提到的数据库不仅仅包括计算机外存,还包括外村中管理数据的软件,是一个综合性概念。 2 计算机网络数据库安全的维护策略探析 2.1 网络漏洞的有效封堵 网络漏洞的出现会给入侵者很好的袭击机会,因此,必须要加强漏洞的有效封堵,最主要的一个方面就是在审核用户使用数据库的情况时,若发现用户端在URL 提交参数时,存在and、or、exec、insert、select、delete、from、update、count、user等用于SQL注入的常用字符或字符串,当存在这些字符则要快速禁止运行ASP,同时报警信号出现“出错提示”每个含有接收用户端URL提交参数的程序中用“”引入即可。这种措施能够有效防止大多数黑客和入侵者的袭击,整个程序的执行速度不会有大的影响。此外,还可以通过拒绝IP在特定时间内的访问权限来避免黑客侵袭,通过查堵form或cookies的漏洞,即当采用的是form 或cookies提交了包含“or”和“=”等字符进行入侵时,则需要在程序编写时添加一些特殊的字符,以此来增强数据库的安全性。 2.2 数据库自身的安全维护 一方面,避免暴库技术对数据库的影响。当前入侵数据库比较常见的技术是暴库技术,即由于IIS服务器对于各个错误执行显示具体情况,同时将正在执行的操作切断,但是在其服务器的默认设置里面显示会将错误信息反馈给系统用户。因此,可以通过调整IIS的默认设置,来实现,暴库技术还会导致数据库中资料被下载,为避免这种情况的发生,可以将数据库文件后面的缀名改为ASP 或ASA的格式,或者是将数据库的名字前面加上#(IE无法下载带有#号的文件),由此起到加密作用。另一方面,用户密码进行加密处理,通常采用MD5进行加

数据库日常维护

数据库日常维护(参考) 数据库日常维护工作是系统管理员的重要职责。其内容主要包括以下几个部分: 一、备份系统数据 SYBASE 系统的备份与恢复机制保证了在系统失败时重新获取数据的可能性。SQL Server 提供了两种不同类型的恢复机制:一类是系统自动完成的恢复,这种措施在每次系统启动时都自动进行,保证了在系统瘫痪前完成的事务都写到数据库设备上,而未完成的事务都被回退;另一类是人工完成的恢复,这是通过DUMP 和LOAD 命令来执行人工备份和恢复工作。因此定期备份事务日志和数据库是一项十分重要的日常维护工作。 1、备份数据库 每一个数据库都应在创建之后卸出,从而提供一个装入基点。在此之后按排定的时间周期表卸出。比如每周五卸出数据库。对一般数据库系统卸出数据库周期建议为每周一次。 除了按计划周期卸出数据库之外,还需在每次运行没有日志的操作后卸出数据库。例如: ·每次强制地运行了DUMP TRAN WITH NO_LOG (因为数据库的磁盘空溢出); ·每次用sp_dboption 允许select into/bulkcopy 做快速拷贝,或用SELECT INTO 命令创建一个永久性的表,或使用了WRITETEXT 命令。 卸出数据库的命令为: DUMP DATABASE database_name TO dump_device database_name 是要卸出的数据库名称,dump_device 是卸出设备的名称。用系统过程sp_helpdevice 可以获得设备的信息。 下面一条命令用来卸出数据库my_db : DUMP DATABASE my_db TO db_bk_dev 2、备份事务日志

SQL+Server+数据库管理维护规范

SQL Server 数据库管理维护规范 Version 1.0 2010-8-17

目录 1 修改记录 (3) 2 简介 (3) 3.数据库的物理环境 (4) 3.1 网络环境 (4) 3.2 目录设置 (5) 3.3 文件设置 (5) 4.数据库账户管理 (5) 5.数据库备份和恢复 (6) 5.1 开发测试环境 (8) 5.2 生产环境 (8) 5.2.1 用户数据库 (8) 5.2.2 系统数据库 (9) 5.2.3 异地备份 (9) 5.2.4 恢复计划 (9) 6.数据库监控 (9) 7.数据库维护 (11) 7.1 性能优化 (11) 7.2 恢复或者切换演练 (11) 附录1 数据库备份,验证备份脚本 (12) 附录2 数据库恢复脚本 (14) 附录3 清除备份文件脚本 (15) 附录4 事件通知例子 (16) 附录5 数据库账户申请表格 (17)

1 修改记录 2 简介 数据库管理和维护是指为了保证业务系统的稳定高效运行,而对数据库系统进行全面周密的可用性,可靠性,可扩展性等方面的措施,以保证数据库系统的稳定高效运行。数据库系统的管理和维护主要包括: Δ数据库用户以及权限的分配与维护 Δ数据库的备份与恢复的设置和演练 Δ数据库性能的定期巡检和优化 Δ数据库高可用性,可扩展性架构方面的不断研究和应用 Δ数据库方面新项目的可行性研究,根据预期规模确定合适架构 Δ数据库系统包括整体架构的监控 Δ不断学习和研究数据库领域最新技术,并适时投入应用 该数据库管理和维护标准是一般数据库系统的管理和维护的试行标准.通过此标准,来规范数据库系统的管理和维护. 我们认为在数据库系统的管理和维护时遵循一定的标准是非常重要并且是必要的.标准能使我们的DBA以统一的方式和风格进行数据库系统的管理维护,从而使我们的数据库系统运行更加规范,数据库结构更清晰,也使数据库系统具有高健壮性,高专业化. 该标准是一个关于数据库系统的管理和维护规范,我们的这个规范主要应用在SQLServer2005/2008上,经过适当的修改之后也可以应用在以前的版本,以后的版本. SQLServer的数据库管理和维护是一个复杂的过程,包含了多种备份恢复技术,

上海交通大学数据库管理与维护作业一答案

Oracle 作业一 单项选择题 1、后台进程的跟踪文件存放于何处?()教材P20 Fig2-24 A. LOGFILE_DEST B. ORACLE_HOME C. BACKGROUND_DUMP_DEST (bdump) D. CORE_DUMP_DEST 本题说明:adump一般是audit dump; bdump是background dump; udump是user dump; cdump是core dump bdump中有alert文件,和一些后台进程的trace file; udump中一般放置sql trace之后session的trace文件; cdump一般放置一些核心的trace文件 2.手工创建数据库第一步应该做什么?()教材P30 A. 启动一个实例 B. 启动SQL*Plus,然后以SYSDBA身份连接到Oracle C. 在系统中核对SID D. 创建一个初始化参数文件 本题说明:第一步是确定新数据库名称和实例名称 3.关于控制文件,以下说法正确的是()。 A. Oracle推荐至少有2个控制文件,并且存放在不同的磁盘上 B. Oracle推荐至少有2个控制文件,并且存放在同一个磁盘上 C. Oracle推荐只存储1个控制文件 D. 对于数据库的正常运行,仅有一个控制文件是不够的 4.执行CREATE DATABASE命令前,必须执行先以下哪条命令?()教材P30 A. STARTUP INSTANCE B. STARTUP NOMOUNT C. STARTUP MOUNT D. NONE OF ABOVE 本题说明:使用CREATE DATABASE语句创建数据库之前,要先连接并启动实例 5.创建数据库时,Oracle从何处得到建库所需的控制文件的信息?()教材P31 A. 从初始化参数文件获得 B. 从CREATE DATABASE命令行获得 C. 从环境变量处获得 D. 从目录下的.ctl文件 中获得 6.以下哪个脚本文件用于创建数据字典视图?()教材P36 A. catalog.sql B. catproc.sql C. sql.sql D. dictionary.sql 7.谁拥有数据字典视图?() A. SYSTEM B. SYS C. DBA D. ORACLE 8.在CREATE DATABASE命令中,哪个子句是无效的?()教材P33 A. MAXLOGMEMBERS B. MAXLOGGROUPS C. MAXDATAFILE D. MAXLOGHISTORY

ORACLE数据库日常维护与管理手册

全球眼(MEGAEYES网络图像管理系统2.0 ORACLE S常维护与管理手册 北京互信互通信息技术有限公司 2004-08-08 目录

1 引言 1.1 目的 对于重要的商业系统来说, 数据库系统的正常运行是保证商业应用平稳运行 的关键。但是 数据库在运行过程中可能会因为种种原因发生问题。 这时,数据库 的管理与日常维护工作将变得尤为重要。 为了指导数据库管理员做好日常维护工作, 保证数据库系统的正常运行, 特 制定本文档。 当然, 数据库的日常维护是复杂和繁琐的, 本文仅涉及一些常见的 数据库日常维护的内容,在实际工作中,数据库管理员还需要做更多的工作。 1.2 范围 本文档使用的人员:数据库维护管理人员和相关人员。 本文档涉及内容: oracle 数据库的 日常维护与管理解决方案。 1.3 参考资料 中国电信网络视频监控技术(暂行)规范 2 日常维护与管理说明 2.1 运行环境 程序的运行环境包括硬件运行环境和软件运行环境。 2.1.1 硬件环境 Intel 及其兼容系列 CPU 剩余内存要达2G 以上 剩余硬盘容量要达 1G 以上 100 M 网卡 2.1.2 软件环境 CPU 类型: 内存容量: 硬盘容量: 网卡类型:

: RedHatLinuxAS3.0 Oracle9iDatabaseRelease2forLinuxx86 2.2数据库日常维护 数据库的日常维护工作主要包括管理员每日的工作内容, 每周的工作内容以 及每月的工作内容。 2.2.1数据库初始设置 基于数据安全性的考虑,需要对数据库进行如下的初始设置。 1数据库设为归档模式 1) 以管理员身份连接数据库 SQL>>connectsys/sys@数据库例程 SIDassysdba 2) 察看数据库是否处于存档模式 SQL>>archiveloglist 说明:该命令会提示以下信息,注意灰色部分显示的状态。 DatabaselogmodeNoArchiveMode AutomaticarchivalDisabled Archivedest in ati on Oldest on li nelogseque nce31 Curren tlogseque nce33 3) 如果处于非归档模式则设为归档模式 SQL>>shutdow nimmediate; SQL>>start upmount; SQL>>alterdatabaseachivelog; 4) 如果处于非自动归档状态则设为自动归档 SQL>>altersystemsetlog_archive_start=TRUESC OP E=s pfile; 5重新启动数据库 SQL>>shutdow nimmediate; SQL>>startu p; 2控制文件设置 每一个数据库都必须有一个控制档。它是一个小型二进制档案,用来描述 Oracle9i 实体结构。主要是储存数据库名称,数据库建立时间,资料文件名称 与所在位置,重置日志文件名称与所在位置,目前的日志序列码 (logsequeneenumber ),检查点信息。因此开启Oracle9i 数据库时一定要读取控 制文件才能取得所有数据库实体档案相关信息。 一旦控制文件不幸毁损,数据库 便无法顺利开启。也因为如此,控制档的管理与维护工作显得格外重要。 通常的设置建议为:每个数据库最好拥有两个以上控制档,并各自存放在不 同磁盘上。系统默认有三个控制文件 controlOl.ctI , control02.ctl , con trol03.ctl 。 如果需要增加更多的控制文件,最简单的方式就是先将既有控制文件复制到 目的位置,然后将控制文件名称加入起始参数档的 CONTROLFILE 之中()。同 理,如果想更改控制档名称,也可以先将控制文件复制到目的位置后予以更名, 再更新操作系统: 数据库:

浅谈数据库的日常管理与维护

浅谈数据库的日常管理与维护 企业在信息管理过程中,大量的数据存储、共享、访问和修改,都需要通过数据库系统来实现。数据库系统作为信息的聚集体,是计算机信息系统的核心,其性能在很大程度上影响着企业信息化水平的高低。一个公司,不管它是自己开发应用软件,还是购买第三方应用软件,都需要对数据库进行管理和维护。科学有效地管理与维护数据库系统,保证数据的安全性、完整性和有效性,己经成为现代企业信息系统建设过程中的关键环节。 数据库管理中存在的问题 随着信息网络技术的飞速发展,数据库的应用越来越广泛,但也随之产生了一系列数据管理的问题,其中,尤为突出的是数据库安全性问题。 数据库安全性问题一直是困扰数据库管理员的难题。通常数据库面临的威胁主要有:软件和硬件环境出现意外,如磁盘损坏,系统崩溃等;计算机病毒可能造成系统崩溃,进而破坏数据;对数据库的不正确访问,引发数据库死循环,造成前端系统无法使用;未经授权非法访问数据库信息,窃取其中的数据;未经授权非法修改数据库中的数据,使其数据失去真实性;通过网络对数据库进行各种非法存取;通过

网络破坏数据库系统的完整性、可靠性;对网络数据库进行拒绝式服务攻击等。而对于重要部门或敏感领域的数据,则会面临更多威胁。这就需要企业信息部门通过加强对数据库的日常维护和管理,来进一步保障网络数据库的安全。 做好数据库的日常管理与维护 数据库系统在信息化建设中的重要地位和作用告诉我们,数据库的日常管理与维护不容小视。为保证数据库数据的安全,企业应该做到未雨绸缪。 (一)完善管理制度,强化监管力度。数据库系统的安全与企业自身内部的安全机制、内外网络环境、从业人员素质等密切相关。因此,企业应该完善网络系统安全规章制度,防范因制度缺陷带来的风险;企业应该规范操作流程和故障处理流程,减少人为失误与故障,提高故障处理速度,缩短故障处理时间;企业应该通过建立科学合理的责任追究机制,防止出现由于工作态度、工作作风等各种人为因素导致的数据库安全事故。 (二)采取措施,确保数据库数据的安全。保证数据库数据的安全是数据库日常管理与维护工作的首要任务,企业需要采取的安全措施主要有:

DM数据库日常维护管理规范

DM数据库日常维护管理规范 使用工具:DM数据库系统,linux系统,TongWeb 5.0 目的:数据库管理操作,TongWeb5.0部署 内容:数据库启动和关闭,备份和还原,数据迁移操作 一.DM数据库启动和关闭 图形方式: 【达梦数据库】——〉【DM控制台工具console】——〉【DM 控制台】——〉【DM 服务】 在其右侧框右键,【DM DATABASE SERVICE】状态即数据库系统启动/关闭。Linux 命令方式: 终端输入: 开启数据库: /etc/init.d/dmserverd start 关闭数据库: /etc/init.d/dmserverd stop 重启数据库:/etc/init.d/dmserverd restart 提示: 在命令模式下,输入#init 3 ,系统进入图形界面模式 在图形界面下,打开终端,输入#init 5,系统进入命令界面模式 #init 0 关闭服务器。

二.数据库备份和还原(图形界面下) 备份数据库: 方法1:DM数据库控制台console(需要关闭数据库运行) 1.进入DM数据库控制台console,停止DM数据库运行 2.右键【新建备份】 3.开启DM数据库运行,操作完成。 方法2:DM数据库管理工具 Manager(不需要关闭数据库运行) 1.进入DM数据库管理工具 2.选中数据库名称,右键选中【备份】 3.备份完成 PS:备份文件名统一格式:库名+服务器名+日期+时间+备份操作人首拼字母,如“RHIN-213-20110916-14h-cqy” 还原数据库: 方法1:dm控制台console还原(用于本地还原) 1.进入DM数据库控制台console,停止DM数据库运行 2.右键【从指定位置还原】,找到还原包,设置还原路径为DM程序默认安装路 径 3.开启DM数据库运行 4.打开【DB管理工具manager】——〉本地服务器——〉数据库——〉RHIN——〉用户——〉新添加RHIN用户信息和权限(若用户名已存在,则选择该用户名登陆权限,点确定;若不存在,则新建一个RHIN用户名)——〉完成。 5.操作完成。 方法2:脱机还原(用于远程还原) 1.通过CRT软件登录系统,后台命令关闭TongWeb5.0服务进程 2.登录DM数据库管理工具 Manager,备份数据库,名称为RHIN-A.bak,路径统 一为系统默认:/opt/dmdbms/data/ 3.右键数据库【脱机】 4.通过CRT将还原数据库包RHIN-B.bak放入/opt/dmdbms/data/下,重命名 RHIN-A.bak为其他,将RHIN-B.bak重命名为RHIN-A.bak 5.管理工具 Manager 脱机状态下,右键还原RHIN-A.bak 6.联机 7.重启DM数据库和TongWeb5.0应用。 8.完成。

SQL Server数据库维护计划的实施步骤

作为网管员,无论其管理的网络的规模是大还是小,在日常的管理中除了维护网络平稳运行、及时排除网络故障、保护网络安全等工作以外,备份网络中关键数据也是其中的一个 非常非常重要的工作环节。 网络中的各种故障无非就分两种:软件故障和硬件故障。对于“硬件故障”可以通过维修或更换硬件设备得到及时解决;对于“软件故障”则可以通过重新安装或升级软件、重做网络或应用软件系统等方法及时解决,而且用此方法来解决网络故障大多需要一些基础的、关键的数据支持才能得以恢复正常。但是,网络中诸如此类的关键数据(特别是“应用软件系统”中的关键数据)的损坏或丢失,绝大部分是无法恢复和弥补的。即使可以恢复部分数据,弥补它们所花费的代价(诸如时间、人力、财力、物力等)都可能远远超出了公司的承受 能力。 所以说,注重数据的备份工作是网管员日常管理工作中的必须时刻关注的一项任务,也 是必须周期性重复操作的一项工作。 目录 现行备份策略 具体实现步骤 结束语 现行备份策略 我公司在组建局域网时,考虑到商业企业的特点,仔细考量了购、销、存三大环节中发生的各种数据及其存储问题后,选定了以Windows 2000 Server为操作系统,SQL Server 2000为数据库平台来搭建局域网的应用系统的软件平台,以网线为载体将购、销、存等核心部门的计算机通过局域网平台紧密地连接起来。这样,各个核心部门每天的任何一笔业务都及时地、动态地存储到公司局域网的核心Dell服务器上的SQL Server 2000数据库中,并以此 为基础平台向各方提供所需的各种数据服务。 因此,自公司局域网开始正式运作之日起,作为网管员的我就非常注重对局域网中的关键数据——特别是这些业务数据的备份工作。同时,我也希望备份数据的软件能够实现以下 自动功能。 功能1:能够在每天的某个固定的时刻(如夜晚0:00:00,当然这个时间是可以自主设定的)对包含所有业务数据库在内的所有关键数据库进行一次“完全备份”。 功能2:能够在每天的0:00:00至23:59:59这段时间内,每间隔1个小时对功能1中所涉及到的各个数据库的事务日志进行“差异备份”。

信息系统数据维护和管理规定

医院信息系统数据维护和管理规定 为加强我院计算机信息系统数据库及基础数据维护和管理,保证医院信息系统数据的安全、稳定、准确,制定本规定。 一、数据库管理 1 .系统维护人员必须管理好数据库和数据库服务器的登录用户名和登录密码,以免被他人盗用。 2 .系统维护人员必须经过专业技术培训,具备相应的专业技术水平方可上岗。 3 .医院各部门工作人员按照医院信息管理系统的使用要求和业务 要求开展工作,规范地录入、接收和移交各类档案数据和各类业务数据。医院有关部门要加强数据质量管理,确保入库数据真实、完整、准确。 4 .医院各类计算机数据统一在数据中心管理保存。系统维护人员 做好数据库审核工作,对收集的各类数据进行完整性和质量检查,对不符合要求的数据,应退回形成部门重新处理。 二、基础数据维护 1.凡需要新增或作废的各项数据,如药品、诊疗项目、一次性材 料,需各相关部门负责人员及科主任签字方可进行相关操作,并自行以时间为序建立变更记录以便核对。 2 .基础数据变更应由各职能科室批准并签章方可执行,主要包括 机构设施变更、人员变更、床位设置变更等。 3 .凡需加入信息科的信息资料须由经办科室主任签字,经办科室 需保留原始记录。

4 .院内各科室需修改业务数据时,凭分管领导批示方可到信息科由系统维护人员修改。 5 .信息科及各职能科室人员可根据工作需要使用信息系统进行数据查询。 6 .为保证各类统计数据的完整性、及时性与准确性,统计数据经使用部门复核后方可使用。 7 .禁止超范围与盗用他人账号进行数据查询,不得私自提供统计数据给其他单位与个人,禁止对数据进行篡改、破坏。

(完整版)大数据库维护工作手册簿

数据库维护工作手册 文档编号:文档名称:编写:审核:批准: 批准日期:

目录 1概述 (3) 2数据库监控 (3) 2.1 数据库监控工作内容 (3) 2.2 数据库监控工作步骤 (3) 2.2.1 查看数据库日志 (3) 2.2.2 检查是否有失效的数据库对象 (4) 2.2.3 查看数据库剩余空间 (4) 2.2.4 重点表检查 (4) 2.2.5 查看数据库是否正常 (4) 2.2.6 死锁检查 (5) 2.2.7 监控SQL语句的执行 (5) 2.2.8 操作系统级检查 (5) 2.2.9 其他 (5) 3数据库维护 (5) 3.1 数据库维护工作内容 (5) 3.2 数据库维护工作事项 (5) 3.2.1 页面修复 (5) 3.2.2 数据库对象重建 (6) 3.2.3 碎片回收(数据重组) (6) 3.2.4 删除不用的数据 (6) 3.2.5 备份恢复 (6) 3.2.6 历史数据迁移 (6) 3.2.7 定期修改密码 (7) 3.2.8 删除掉不必要的用户 (7) 3.2.9 其他 (7) 4数据库管理常用SQL脚本 (7) 5日常维护和问题管理 (16) 5.1 目的 (16) 5.2 例行工作建议 (16) 5.3 相关填表说明 (16)

1概述 数据库的日常监控是使管理员及时了解系统异常的手段。大部分情况下,系统总是正常运行的。只有对正常情况的充分了解,才能通过对比正常情况发现异常情况。对于数据库的日常监控要有记录,文字记录或者电子文档保存。对于数据库异常进行分析,提出解决方案。 日常工作包括监控和维护两个部分。 此文档中关于数据库的运行命令示例主要针对于ORACLE数据库,但对于SYBASE数据库同样有参考价值,只要换用相对应的语句即可。 数据库监控 2数据库监控 数据库监控工作内容 制定和改进监控方案,编写监控脚本。 对于数据库进行日常监测,提交记录。 根据监测结果进行分析、预测,提交相应的系统改进建议方案。 数据库监控工作步骤 2.1.1查看数据库日志 数据库的日志上会有大量对于管理员有用的信息。ORACLE的Alert日志纪录了数据库系统所报的系统级错误信息,以及数据块失效等严重错误信息。错误信息的产生,会产生相应的跟踪文件,通过查看警告日志和跟踪文件可查找错误原因,对于发现的问题应及时解决和汇报。如: 1.表空间是否满,是否需要进行添加或者扩展。Alert文件中会显示有表块无法扩展 的提示。 2.表的块或者页面是否损坏。(往往这时alert文件中会显示ora-600的错误。) 3.数据库是否进行了异常操作。(如:drop tablespace等等)。 实用命令: ·报警日志文件(alert.log或alrt.ora) 记录数据库启动,关闭和一些重要的出错信息。数据库管理员应该经常检查这个文件,并对出现的问题作出即使的反应。可以通过以下SQL 找到他的路径select value from v$parameter where upper(name) ='BACKGROUND_DUMP_DEST',或通过参数文件获得其路径,或者show parameter BACKGROUND_DUMP_DEST。 ·后台跟踪文件 路径与报警文件路径一致,记载了系统后台进程出错时写入的信息。 ·用户跟踪文件

ORACLE数据库日常维护与管理手册

全球眼?(MEGAEYES)网络图像管理系统ORACLE日常维护与管理手册 北京互信互通信息技术有限公司 2004-08-08 目录 1引言....................................................... 目的 .................................................... 范围 .................................................... 参考资料 ................................................ 2日常维护与管理说明......................................... 运行环境 ................................................ 硬件环境............................................. 软件环境............................................. 数据库日常维护 .......................................... 数据库初始设置....................................... 每日工作内容......................................... 每周工作内容......................................... 每月工作内容.........................................

数据库日常运行维护方案

Oracle数据库日常运行维护方案 2019年3月

1项目背景及目标 1.1 项目背景 XXX信息化建设经过多年的发展和完善,已经建立成熟的网络环境及业务及管理的各类应用系统,目前在线运行的PC 近XX台,近年来建设的XX业务管理等若干应用信息系统多数是基于Oracle数据库系统的应用。这些Oracle 数据库产品的标准服务都已经过了服务期。而各系统随着数据量的逐年增加,陆续出现了性能问题,有必要进行数据库系统的升级及性能优化,以确保应用系统的正常运行,为XXX提供更好的信息服务。 1.2 项目目标 尽早发现性能瓶颈,及时调整,保障数据库稳定高效工作;对各个系统数据库进行补丁升级服务,安装补丁前需要对补丁的可行性及风险即你想那个分析,并制定升级计划和应急回退计划。同时要做好系统备份准备及详细的测试工作,确保系统的稳定性、安全性,保障系统业务数据的安全; 数据库架构的合理化; 提升应用系统性能,完成各系统数据库的性能调优工作,包括:外部资源调优、行的重新安排调优、SQL 性能调优、表格和索引存储参数设置调优等。 各业务持续性得到有效的保证。 2需求分析 通过对 xxx 技术要求进行详实的分析以及 xxx信息系统建设的了解,各应用系统的Oracle产品日常运行维护项目主要从如下几个方面进行: 1、由于 xxx 有些系统软件建设的较早,目前存在不同版本的数据库共存的现象, 包括:Oralce8、Oracle9I、Oracle10g以及Oracle11g等。而 Oracle9I 版

本之前的数据库 SQL 编程语句还不是业界通用的标准化的语句,它与后面版本的 SQL 编程语句有很大的差别,所以在这方面的性能优化需要做好充分备份的准备。 2、正是由于这些系统建设的较早,基于当时的实际情况,应用系统或数据库都还 存在一些不足,针对这些情况软件开发商都开发出相应的补丁提供给用户进行升级以防范风险。所以在对各个系统数据库进行补丁升级服务之前,需要对补丁的可行性、安全性及风险进行充分的测试和分析。并制定相关的应急预案及数据库升级计划和应急回退计划,同时还需要做好系统备份准备和详细的测试工作,以确保系统的稳定性、安全性,从而保证系统业务数据的安全; 3、如上所说,这些系统建设的较为长久,由于长时间的运行各个系统存在一些冗 余,由于冗余的存在使得这些系统数据库需要进行性能的优化,包括外部资源优化、行的重新安排以及 SQL 性能优化、表格和索引存储参数等需要重新进行设置优化。 4、对于当前的一些应用如:企业资产管理系统(EAM)、基建 MIS 管理系统、全面 预算管理系统、生产综合管理系统、企业门户(EIP/EAI)系统、综合指标统计分析系统、燃料管理信息系统、标准化管理信息系统、档案管理信息系统、安健环管理系统、技术监督管理子系统、IT 运维服务系统、SIS 系统接口数据库、生产图纸管理系统等等所有这些系统都需要重新进行整理并形成一个完善的文档资料。 5、由于这些数据库系统承载着 xxx 非常重要的业务系统数据,所以在日常维护 中需要非常仔细,每周、每月、每季都需要有相应的巡检记录,需要详细记载以下一些内容: 监控数据库对象的空间扩展情况 监控数据量的增长情况 系统健康检查 数据库对象有效性检查 查看是否有危害到安全策略的问题。 查看 alert、Sqlnet 等日志并归档报错日志 分析表和索引 查看对数据库会产生危害的增长速度

相关主题
文本预览
相关文档 最新文档