数据库规范(20200521130229)
- 格式:pdf
- 大小:41.69 KB
- 文档页数:13
第1篇一、总则1. 为规范数据库的使用和管理,确保数据库的安全、可靠、高效运行,特制定本规则。
2. 本规则适用于所有使用数据库的单位和个人,包括但不限于数据库管理员、开发人员、运维人员等。
3. 使用数据库的单位和个人应严格遵守本规则,切实履行职责,确保数据库的正常运行。
二、数据库分类与命名1. 数据库分为生产库、测试库、开发库和备份库等类型。
2. 数据库命名规则如下:a. 生产库:以“生产”为前缀,例如“生产-销售数据库”。
b. 测试库:以“测试”为前缀,例如“测试-财务数据库”。
c. 开发库:以“开发”为前缀,例如“开发-人事数据库”。
d. 备份库:以“备份”为前缀,例如“备份-全库备份”。
三、权限管理1. 数据库权限分为系统权限和数据权限。
2. 系统权限包括:a. 数据库管理员权限:负责数据库的创建、删除、备份、恢复等操作。
b. 数据库用户权限:负责对数据库进行查询、插入、更新、删除等操作。
3. 数据权限包括:a. 全局权限:对所有数据库的查询、插入、更新、删除等操作。
b. 表权限:对特定表的查询、插入、更新、删除等操作。
4. 权限分配原则:a. 最小权限原则:授予用户完成工作任务所必需的最小权限。
b. 分级授权原则:根据用户职责和权限需求,逐级授权。
四、数据备份与恢复1. 数据备份分为全库备份和增量备份。
2. 全库备份:每月进行一次,存储在备份库中。
3. 增量备份:每天进行一次,存储在备份库中。
4. 数据恢复原则:a. 及时性:在发现数据丢失或损坏时,尽快进行恢复。
b. 可靠性:确保恢复后的数据与原始数据一致。
五、数据安全与防护1. 数据库安全防护措施:a. 设置强密码:管理员和用户密码应包含大小写字母、数字和特殊字符。
b. 定期更换密码:管理员和用户密码应定期更换。
c. 数据加密:对敏感数据进行加密存储。
d. 访问控制:严格控制数据库访问权限。
e. 防火墙:部署防火墙,防止外部攻击。
2. 数据库安全检查:a. 定期检查数据库安全漏洞。
数据库规范数据库规范数据库规范是指对数据库设计和使用的一系列规则和建议,以确保数据库的一致性、可靠性和有效性。
以下是数据库规范的一些建议,以帮助用户设计和使用高品质的数据库。
1. 数据库设计规范- 数据库设计应该符合正规化理论,以避免数据冗余和不一致。
- 数据表应该具有清晰、准确的字段定义,避免使用模糊、多义的字段名。
- 数据表应该具有适当的主键和外键,以保证数据的完整性和一致性。
- 数据库应该具有适当的索引,以提升查询和查询性能。
- 数据库设计应该具备可扩展性,以满足未来的需求变化。
- 数据库设计应该考虑安全性和权限控制,以保护敏感数据。
2. 数据库操作规范- 数据库操作应该使用正确的SQL语法和语义,避免不规范的查询和操作。
- 数据库操作应该遵循事务处理的原则,以保障数据的一致性和可靠性。
- 数据库操作应该进行适当的错误处理和异常处理,以提供良好的用户体验。
- 数据库操作应该进行性能优化,避免无效的查询和操作,提高查询和操作效率。
3. 数据库安全规范- 数据库应该采用强密码策略,用户密码应该使用复杂度高的密码,并要求定期更改密码。
- 数据库应该限制对敏感数据的访问权限,只允许授权用户访问,并进行必要的审计记录。
- 数据库应该定期进行备份和恢复测试,以防止数据丢失和灾难恢复。
- 数据库应该进行漏洞扫描和安全评估,及时修复和更新数据库软件和补丁。
4. 数据库维护规范- 数据库应该定期进行维护和优化,包括索引重建、碎片整理、统计信息更新等操作。
- 数据库应该定期进行性能监控和调优,以提升数据库的响应速度和处理能力。
- 数据库应该进行定期的容量规划和增长预测,以满足未来的需求增长。
总结:数据库规范是确保数据库设计和使用的一系列规则和建议,以最大程度地保证数据库的一致性、可靠性和效率。
通过遵循数据库规范,可以帮助用户设计和使用高品质的数据库,提高数据管理和应用的效果。
同时,数据库规范还能够提高数据库的安全性,保护数据免受未授权访问和损坏的风险。
数据库管理规范一、概述数据库管理规范是为了保证数据库系统的高效、安全、可靠运行而制定的一系列规范和标准。
本文将从数据库设计、权限管理、备份与恢复、性能优化等方面详细介绍数据库管理规范的要求和操作流程。
二、数据库设计规范1. 数据库命名规范- 数据库名应简洁明了,能够准确描述其所存储的数据内容。
- 数据库名使用小写字母,可以使用下划线作为分隔符。
- 避免使用数据库系统保留的关键字作为数据库名。
2. 表设计规范- 表名应具有描述性,能够清晰表达其所存储数据的含义。
- 表名使用小写字母,可以使用下划线作为分隔符。
- 表名避免使用数据库系统保留的关键字作为表名。
- 表中的字段名应具有描述性,能够清晰表达字段所存储数据的含义。
- 字段名使用小写字母,可以使用下划线作为分隔符。
- 字段名避免使用数据库系统保留的关键字作为字段名。
3. 数据类型选择- 根据数据的实际需求,选择合适的数据类型,避免浪费存储空间和性能。
- 避免使用过长的数据类型,例如使用INT代替BIGINT等。
4. 索引规范- 根据查询需求和数据量,合理选择索引类型和字段。
- 避免过多的索引,以免影响插入和更新操作的性能。
- 定期检查和优化索引,确保其有效性和性能。
三、权限管理规范1. 用户权限管理- 为每个用户分配最小权限原则,避免用户拥有不必要的权限。
- 定期审查和更新用户权限,确保权限的合理性和安全性。
- 禁止使用默认或弱密码,要求用户使用强密码并定期更换。
2. 角色权限管理- 根据用户的职责和权限需求,设定不同的角色。
- 角色应具有清晰的权限范围和权限等级,避免权限冲突和滥用。
- 定期审查和更新角色权限,确保权限的合理性和安全性。
3. 数据库审计- 启用数据库审计功能,记录用户的操作和访问日志。
- 定期审查和分析审计日志,发现异常操作和安全风险。
四、备份与恢复规范1. 定期备份- 根据业务需求和数据变更频率,制定合理的备份策略。
- 定期对数据库进行全量备份和增量备份,确保数据的完整性和可恢复性。
数据库标准规范(二)引言:数据库是当代信息系统中关键的存储和管理数据的工具,数据库标准规范的制定对于确保数据的一致性、完整性和可靠性至关重要。
本文将详细阐述数据库标准规范的五个大点,包括数据库设计、数据模型、数据操作、数据存储和数据安全。
概述:在数据库标准规范中,数据库设计是基础,决定了整个数据库系统的架构和功能。
数据模型定义了数据的结构和属性,数据操作确定了对数据库的增删改查操作,数据存储指定了数据的物理存储方式,数据安全保证了数据库的安全性和可用性。
正文内容:一、数据库设计1. 定义数据库设计的目标和要求,包括数据的一致性、可扩展性和易用性。
2. 建立数据库的概念模型,包括实体关系模型、关系模型和层次模型。
3. 制定数据库设计的规范和准则,确保数据库结构的一致性和易维护性。
4. 设计数据库的表结构,包括表的字段、属性和约束等。
5. 定义数据库的索引和视图,提高数据库的查询和操作效率。
二、数据模型1. 介绍常用的数据模型,包括层次模型、网络模型、关系模型和面向对象模型。
2. 选择合适的数据模型,根据数据库的特点和应用需求进行权衡。
3. 设计数据模型的实体和属性,确保数据的准确性和完整性。
4. 定义数据模型之间的关系,包括一对一、一对多和多对多关系。
5. 使用标准的建模工具和方法,对数据模型进行建模和验证。
三、数据操作1. 定义数据操作的目标和要求,包括数据的增加、删除、修改和查询。
2. 设计数据操作的接口和功能,提供简单易用的操作方式。
3. 制定数据操作的规范和约束,确保数据的一致性和安全性。
4. 优化数据操作的性能,提高查询和更新的效率。
5. 实现数据操作的事务管理和并发控制,确保数据的一致和可靠。
四、数据存储2. 设计数据的物理存储结构,包括数据文件、表空间和数据块等。
3. 制定数据存储的规范和准则,确保数据的安全和可靠。
4. 实施数据存储的备份和恢复策略,保护数据的完整性和可用性。
5. 优化数据存储的性能,提高数据访问的效率和响应速度。
保密级别:□绝密□机密□秘密■内部公开数据库设计规范变更记录目录1编写目的 (1)2数据库策略 (1)2.1数据库对象长度策略 (1)2.2数据完整性策略 (1)2.3规范化设计与性能之间的权衡策略 (1)2.4字段类型的定义与使用策略 (1)3命名规范 (3)3.1数据库命名规则 (3)3.2数据库对象命名的一般原则 (4)3.3表空间(Tablespace)命名规则 (4)3.4表(Table)命名规则 (4)3.5字段命名规则 (4)3.6视图(View)命名规则 (5)3.7序列(Sequence)命名规则 (5)3.8存储过程(Procedure)的命名规则 (5)3.9函数(Function)的命名规则 (5)3.10索引(Index) 命名规范 (5)3.11约束(Constraint) 命名规范 (5)4数据模型产出物规范 (5)附录A:xml文件使用说明 (7)附录B:保留关键字 (8)1编写目的本文的目的是提出针对Oracle数据库的设计规范,使利用Oracle数据库进行设计开发的系统严格遵守本规范的相关约定,建立统一规范、稳定、优化的数据模型。
参照以下原则进行数据库设计:1)方便业务功能实现、业务功能扩展;2)方便设计开发、增强系统的稳定性和可维护性;3)保证数据完整性和准确性;4)提高数据存储效率,在满足业务需求的前提下,使时间开销和空间开销达到优化平衡。
2数据库策略1)数据模型全局单一,所有公共的数据模型得到共享。
2)数据库建模要基于统一的元数据管理机制。
3)数据库设计遵循关系数据库的规范化理论。
4)OLTP与OLAP分开设计。
2.1数据库对象长度策略数据库字段的长度要考虑业务对象的类型、数据库所用字符集、时间格式来设定出相对准确的长度,满足业务需要,同时保证数据库的高效,避免不必要的开销。
2.2数据完整性策略1)必须遵循数据库设计的第二范式,根据业务需要尽量满足第三范式。
数据库管理规范一、引言数据库是组织和存储数据的关键组件,对于企业来说,数据库的管理至关重要。
良好的数据库管理规范能够提高数据库的性能、安全性和可靠性,保证数据的完整性和一致性,提升企业的运营效率。
本文将介绍数据库管理的一些基本规范和最佳实践。
二、命名规范1. 数据库命名规范- 数据库名称应具有描述性,能够清晰地表达其所存储的数据内容。
- 数据库名称应使用小写字母,并使用下划线(_)分隔单词,避免使用特殊字符和空格。
- 数据库名称不宜过长,建议控制在30个字符以内。
2. 表命名规范- 表名称应具有描述性,能够清晰地表达其所存储的数据内容。
- 表名称应使用小写字母,并使用下划线(_)分隔单词,避免使用特殊字符和空格。
- 表名称不宜过长,建议控制在30个字符以内。
- 表名中的单词应使用名词或名词短语,并尽量避免使用缩写。
3. 列命名规范- 列名称应具有描述性,能够清晰地表达其所存储的数据含义。
- 列名称应使用小写字母,并使用下划线(_)分隔单词,避免使用特殊字符和空格。
- 列名称不宜过长,建议控制在30个字符以内。
- 列名中的单词应使用名词或名词短语,并尽量避免使用缩写。
三、数据类型选择1. 字符串类型- 对于存储固定长度的字符串,应选择CHAR类型。
- 对于存储可变长度的字符串,应选择VARCHAR类型。
- 对于存储较长的字符串,应选择TEXT类型。
2. 数值类型- 对于存储整数,应选择INT类型。
- 对于存储小数,应选择DECIMAL或FLOAT类型。
3. 日期和时间类型- 对于存储日期,应选择DATE类型。
- 对于存储时间,应选择TIME类型。
- 对于存储日期和时间,应选择DATETIME类型。
4. 其他类型- 对于存储二进制数据,应选择BLOB类型。
- 对于存储布尔值,应选择BOOLEAN类型。
四、索引规范1. 索引的选择- 对于经常用于查询条件的列,应创建索引以提高查询性能。
- 对于唯一性约束的列,应创建唯一索引以保证数据的唯一性。
数据库操作规范1.总则1.1为规范我司信息系统的数据库管理和配置方法,保障信息系统稳定安全地运行,特制订本办法。
2.适用范围本规范中所定义的数据管理内容,特指存放在信息系统数据库中的数据,对于存放在其他介质的数据管理,参照相关管理办法执行。
3.数据库管理员主要职责3.1负责对数据库系统进行合理配置、测试、调整,最大限度地发挥设备资源优势。
负责数据库的安全运行。
3.2负责定期对所管辖的数据库系统的配置进行可用性、可靠性、性能以及安全检查。
3.3负责定期对所管辖的数据库系统的可用性、可靠性、性能以及安全的配置方法进行修订和完善。
3.4负责对所管辖的数据库系统运行过程中出现的问题及时处理解决。
3.5负责对所管辖数据库系统的数据一致性和完整性,并协助应用开发人员、使用操作等相关人员做好相关的配置、检查等工作。
3.6负责做好数据库系统及数据的备份和恢复工作。
4.数据库的日常管理工作4.1每日的管理工作4.1.1数据库管理员每天登录到服务器操作系统,进行如下检查工作:(1)检查所有的数据库实例状态以及所有与数据库相关的后台进程。
(2)检查数据库网络的连通与否,比如查看监听器(listener)的状态、网络能否ping通其它的计算机、应用系统的客户端能否连通服务器等等。
(3)检查磁盘空间的使用情况。
如果剩余的空间不足20%,需要删除不用的文件以释放空间。
(4)查看告警文件有无异常。
(5)根据数据库系统的特点,检查其它的日志文件中的内容,发现异常要及时加以处理。
(6)检查CPU、内存及IO等的状态。
(7)检查备份日志文件以及网络备份软件的监控记录,确定自动备份成功完成。
对于数据库的脱机备份,要确信备份是在数据库关闭之后才开始的,备份内容是否齐全。
运行在归档模式下的数据库,既要注意归档日志文件的清除,以免磁盘空间被占满,也必须注意归档日志文件的保留,以备恢复时使用。
(8)每天运行数据库管理控制台,检查数据存储空间的使用情况、剩余情况,必要时增大数据存储空间容量。
数据库管理规范一、引言数据库管理规范旨在确保数据库的安全性、稳定性和高效性。
本文档将详细介绍数据库管理的各个方面,包括数据库的命名规范、备份与恢复、权限管理、性能优化等内容。
二、数据库命名规范1. 数据库名称应具有描述性,能够清晰地反映其所存储的数据内容。
2. 数据库名称应使用小写字母,单词之间使用下划线分隔。
3. 数据库名称不应超过30个字符。
三、备份与恢复1. 定期备份数据库,确保数据的安全性。
2. 备份数据应存储在不同的位置,以防止单点故障。
3. 定期测试数据库备份的可用性,确保备份数据的完整性和可恢复性。
4. 定期进行数据库恢复测试,以验证数据库恢复的可行性。
四、权限管理1. 为每一个用户分配适当的权限,确保数据的安全性和隐私性。
2. 根据用户的职责和需求,限制其对数据库的访问权限。
3. 定期审计用户权限,及时发现并修复权限问题。
五、性能优化1. 定期监控数据库的性能,包括CPU利用率、内存使用率、磁盘IO等指标。
2. 根据监控结果,进行性能优化,如优化查询语句、索引优化等。
3. 定期清理无用的数据和索引,以提高数据库的性能。
六、安全性管理1. 使用强密码保护数据库账户,定期更新密码。
2. 定期更新数据库软件和补丁,确保数据库的安全性。
3. 限制数据库的物理访问权限,确保数据库服务器的安全性。
七、容灾与高可用1. 配置数据库的冗余备份,确保在主数据库故障时能够快速切换到备份数据库。
2. 配置数据库的集群,提供高可用性和负载均衡能力。
3. 定期进行容灾演练,验证容灾方案的可行性。
八、日志管理1. 启用数据库的日志功能,记录数据库的操作和变更。
2. 定期备份和归档数据库日志,以便于故障恢复和审计。
九、数据安全性1. 使用加密技术保护敏感数据,如用户密码、信用卡信息等。
2. 定期进行数据备份和恢复测试,确保数据的完整性和可用性。
十、版本控制1. 使用版本控制工具管理数据库的结构和脚本。
2. 定期备份数据库的结构和脚本,以便于版本回滚和代码管理。
数据库规则1、数据库规则1、尽量不要使用 %XXX% 查询,采用 XXX%查询。
2、尽量不要使用函数查询,查询过程中尽量不要使用函数处理数据。
3、索引建立的原则:要建立的经常使用的字段上,建立在不会经常变动的字段上。
需要的时候建立组合索引4、数据量大的表按必须加时间段查询,且时间段不要超过一年。
5、不需要用子查询的时候,尽量不要使用子查询。
2、常用SQL语句编写规范目的:通过该规范,统一各个项目工程SQL语句的设计编写规范:1、SQL关键字使用大写,一个关键字一行,每个关键字右对齐;2、计算符(如:+,-,=,<=,>=)需要前后加空格;3、涉及多个表的查询时,必须在SELECT列的字段前加表名或者表的别名;4、WHERE子句书写时,每个条件占一行,语句另起一行时,以保留字或者连接符开始,连接符右对齐。
5、当语句的同一部分要延续到下一行时,按下列格式排列:SELECT col1,col2,col3,col4,col5,col6,col7,col8,col9,col101)CREATE 语句CREATE TABLE <表名>(<列名称1> <数据类型> ,<列名称2> <数据类型> ,<列名称3> <数据类型> ,. . .)2)SELECT 语句SELECT <选择列列表>[ INTO <新表名> ]FROM <要选择的表名>[ WHERE <搜索条件>][ GROUP BY <分组条件>][ HAVING <搜索条件>][ ORDER BY <排序规则> [ ASC | DESC ] ]3)INSERT 语句INSERT INTO <要插入的表名>(<列1>,<列2>,...,<列n-1>,<列n>)VALUES ( <列1值>,<列2值>,...,<列n-1值>,<列n值>)4)UPDATE 语句UPDATE <要更新的表名>SET <要更新的列> = <列值>5)DELETE 语句DELETE FROM <要删除的字段的表名>WHERE <要删除的列> = <列值>6、尽量不用Select *用select * 时更多的消耗CPU、内存、IO、网络带宽7、改写OR为IN()OR效率 O(n)IN效率 O(Log n)注意控制in的个数,建议n小于200例:select * from opp where phone = '12347856' or phone ='42242233'改成:select * from opp where phone in('12347856' ,'42242233')8、能够使用between就不要使用inIn会使系统无法索引,只能直接使用表中的数据SELECT * FROM T1 WHERE ID IN (10,11,12,13,14)改成:SELECT * FROM T1 WHERE ID BETWEEN 10 AND 14能用UNIONALL就不要用UNIONUNION ALL 不执行Select distinct函数,这样就会减少很多不必要的资源9、该写OR为UNION不同字段,将or改为union例:select * from opp where phone ='' or cellphone =''改成:select * from opp where phone= ''UnionSelect * from opp where cellphone =''10、避免负向查询Not 、!=、 <>、!<、!>,not in,not like等11、避免%前缀模糊查询例:select * from post where title like '%北京%'改成:select * from post where title like '北京%'12、count(*)资源开销大,尽量少用13、尽量使用“>=”,不要使用“>”。
1.编写格式规范1.1SP dbo前缀Stored procedure和User Defined Function的名字开始前要加上dbo角色﹐如﹕CREATE PROCEDURE 以Stored procedure 名称以P_做为前缀如 SP_UserInsert1.2User Defined Function的命名规则User Defined Function的名称由fn_+名称构成。
F_是固定的前缀;名称中每个单词的第一个字母要大写,并尽可能表达出此函数所要完成的功能,如﹕f_G et L icense N o B y SN1.3Keyword所有SQL Server的keyword要大写﹐如﹕SELECT@_n UnitQty = UnitQtyFROM Packing(NOLOCK)WHERE PackingCode = @_str PackingCode1.4变量定义Store procedure的内部变量和传入的参数要区分开来﹐如﹕@value代表参数@_value代表内部变量1.5变量命名▲变量的命名由变量类型前缀+名称组成。
名称的单词要区分大小写,并尽可能表达出变量的含义,或是大家周知的缩写。
如﹕@str WorkOrderNo@_n WorkOrderQty@str WO@n WORequestQty▲变量类型的前缀分类灰色字体的变量类型暂没有定义前缀,如需要使用,请通知主管来确定此部分的定义,再行使用变量类型前缀bit bintntinyintsmallintbiginttinyintdecimalnumericcharncharstrvarcharnvarchardatetimedtsmalldatetimetimestampbinaryimagemoneyntextrealsmallmoneysql_varianttextuniqueidentvarbinary1.6编码格式▲新建Table新建Table,及新增的字段,其字段名必须有明确的含义。
数据库设计规范2020年12月变更记录目录1 编写目的 (1)2 数据库策略 (1)2.1 数据库对象长度策略 (1)2.2 数据完整性策略 (1)2.3 规范化设计与性能之间的权衡策略 (1)2.4 字段类型的定义与使用策略 (1)3 命名规范 (3)3.1 数据库命名规则 (3)3.2 数据库对象命名的一般原则 (3)3.3 表空间(Tablespace)命名规则 (4)3.4 表(Table)命名规则 (4)3.5 字段命名规则 (4)3.6 视图(View)命名规则 (4)3.7 序列(Sequence)命名规则 (5)3.8 存储过程(Procedure)的命名规则 (5)3.9 函数(Function)的命名规则 (5)3.10 索引(Index) 命名规范 (5)3.11 约束(Constraint) 命名规范 (5)4 数据模型产出物规范 (5)4.1 PDM文件 (5)4.1.1. 产出物产出顺序 (5)4.1.2. 域规范 (5)4.1.3. Domains规范 (6)4.1.4. 显示规范 (6)4.1.5. 必填列规范 (6)4.1.6. 外键规范 (6)4.1.7. 注释规范 (6)4.2 XML文件 (6)4.3 建表脚本 (7)附录A:xml文件使用说明 (8)附录B:保留关键字 (9)1编写目的本文的目的是提出针对Oracle数据库的设计规范,使利用Oracle数据库进行设计开发的系统严格遵守本规范的相关约定,建立统一规范、稳定、优化的数据模型。
参照以下原则进行数据库设计:1)方便业务功能实现、业务功能扩展;2)方便设计开发、增强系统的稳定性和可维护性;3)保证数据完整性和准确性;4)提高数据存储效率,在满足业务需求的前提下,使时间开销和空间开销达到优化平衡。
2数据库策略1)数据模型全局单一,所有公共的数据模型得到共享。
2)数据库建模要基于统一的元数据管理机制。
3)数据库设计遵循关系数据库的规范化理论。
数据库管理规范一、引言数据库是组织和存储数据的关键工具,对于一个企业或者组织来说,数据库的管理是至关重要的。
数据库管理规范旨在确保数据库的安全性、可靠性和高效性,提供一套标准的操作指南,以便管理员和用户能够正确地使用和维护数据库。
二、数据库命名规范1. 数据库名称应具有描述性,能够清晰地表达其所存储的数据内容。
2. 数据库名称应使用小写字母,不得包含特殊字符或者空格。
3. 数据库名称应简洁明了,避免使用过长或者过于复杂的名称。
三、数据表设计规范1. 数据表名称应具有描述性,能够清晰地表达其所存储的数据内容。
2. 数据表名称应使用小写字母,不得包含特殊字符或者空格。
3. 数据表名称应简洁明了,避免使用过长或者过于复杂的名称。
4. 数据表应具有主键,确保数据的惟一性和完整性。
5. 数据表的字段应具有明确的命名规范,能够清晰地表达其含义。
6. 数据表的字段类型应根据存储的数据内容选择合适的类型,避免浪费存储空间。
四、数据备份规范1. 定期进行数据库备份,确保数据的安全性和可恢复性。
2. 数据库备份应存储在安全可靠的位置,防止数据丢失或者被恶意篡改。
3. 数据库备份应包括完整的数据和索引,以便能够恢复到任意时间点的状态。
4. 数据库备份的频率和方式应根据数据的重要性和变动频率进行合理的规划。
五、数据安全规范1. 限制数据库的访问权限,只授权给有必要的人员。
2. 使用强密码来保护数据库的登录账号,定期更换密码。
3. 定期对数据库进行安全检查和漏洞扫描,及时修补潜在的安全漏洞。
4. 对重要数据进行加密存储,确保数据的机密性。
5. 建立审计机制,记录数据库的操作日志,以便追踪和审查数据的访问和修改情况。
六、性能优化规范1. 对数据库进行定期的性能监测和优化,确保数据库的响应速度和稳定性。
2. 合理使用索引,提高查询效率。
3. 避免使用过多的触发器和存储过程,以免影响数据库的性能。
4. 定期清理无用的数据和日志,减少数据库的存储空间占用。
数据库管理规范一、概述数据库管理规范是为了保证数据库的安全性、可靠性和高效性而制定的一系列规定和标准。
本文将从数据库的命名规范、权限管理、备份与恢复、性能优化等方面进行详细阐述。
二、数据库命名规范1. 数据库名称应具有描述性,能够清晰地表达数据库的用途和内容。
2. 数据库名称不宜过长,建议控制在30个字符以内。
3. 数据库名称应使用小写字母和数字的组合,不使用特殊字符和空格。
4. 数据库命名应遵循统一的命名规范,便于管理和维护。
三、权限管理1. 数据库管理员应根据用户职责和需求,分配合适的权限。
2. 对于敏感数据和重要操作,应设置严格的访问控制,只授权给必要的人员。
3. 定期审查和更新权限,及时撤销再也不需要的权限。
4. 禁止共享账号和密码,每一个用户应拥有独立的账号和密码。
四、备份与恢复1. 定期备份数据库,并将备份数据存储在安全可靠的地方。
2. 备份数据应加密存储,确保数据的机密性。
3. 备份策略应根据数据的重要性和变化频率进行调整,保证备份数据的及时性和完整性。
4. 定期进行恢复测试,验证备份数据的可用性和恢复过程的正确性。
五、性能优化1. 对数据库进行定期的性能监控和分析,及时发现和解决性能问题。
2. 合理设置数据库的参数和配置,以提高数据库的性能和稳定性。
3. 对频繁访问的表和字段进行索引优化,加快查询和更新的速度。
4. 避免长期的事务和大量的并发操作,以减少数据库的负载。
六、安全管理1. 对数据库进行加密保护,防止数据泄露和非法访问。
2. 定期更新数据库软件和补丁,及时修复已知的安全漏洞。
3. 设置强密码策略,要求用户使用复杂的密码,并定期更换密码。
4. 监控数据库的安全事件和异常行为,及时采取措施进行处理和防范。
七、日志管理1. 开启数据库的日志功能,记录重要的操作和事件。
2. 定期审查和分析数据库日志,及时发现异常和潜在的安全风险。
3. 对日志进行备份和存储,确保日志的完整性和可追溯性。
数据库设计规范
⼀.命名规范
1. 采⽤26个英⽂字母(区分⼤⼩写)和0-9的⾃然数(经常不需要)加上下划线'_'组成,命名简洁明确,多个单词⽤下划线'_'分隔。
2. 库名、表名、字段名:要字母⼩写加下划线风格,长度不能超过32个字符,禁⽌拼⾳加英⽂混合命名。
3. 每个字段要有注释,每个表名要有注释,字段的取值含义或者范围,枚举值要有注释,这些都要有中⽂注释。
4. 布尔类型的字段名尽量避免⽤“is”开头,这是由于有些框架会⾃动解析“is”开头的javaBean。
可以使⽤“can”或者“do”。
5. 表名与字段名尽量保持在30个字符以下
⼆.设计规则
1. 三范式
第⼀范式:1NF是对属性的原⼦性约束,要求属性具有原⼦性,不可再分解;
第⼆范式:2NF是对记录的惟⼀性约束,要求记录有惟⼀标识,即实体的惟⼀性;
第三范式:3NF是对字段冗余性的约束,即任何字段不能由其他字段派⽣出来,它要求字段没有冗余。
2. 使⽤存储引擎。
因为安全,事务,⾏锁。
3. 字符集必须是UTF-8字符集。
4. 尽量减少或者不使⽤触发器、视图、存储过程。
风险⼤,维护成本⾼,尤其对于互联⽹项⽬。
5. 关键表都需要有三个字段(主键、创建时间、修改时间)
6. 存储精确浮点数必须使⽤DECIMAL替代FLOAT和DOUBLE。
7. 如果需要时分秒时间记录,建议⽤datetime类型。
数据库有关规范1.使用 utf8mb4 字符集2.全部表、字段一定写清中文说明3.金额字段严禁使用小数储存(单位:分)4. 严禁使用字段属性隐式变换(如:“ WHERE ms_no = 1234” ms_no为字符串种类)5.尽量不使用负向查问( NOT、 !=、 <>、 !<、 !>、 NOT IN、 NOT LIKE等)6.严禁使用外键,若有完好性拘束,需要应用程序控制7.严禁使用程序配置文件内的账号接见线上数据库8.严禁非 DBA 对线上数据库进行写操作9.开发、测试、线上环境分别10.因此提交的 SQL语句一定经过测试11.严禁储存大文件或大照片12.库名、表名、字段名:小写,下划线切割,不超出32 个字符,一定见名知意,严禁拼音英文混用13.表一定有主键14.一定把字段定义为 NOT NULL并设置默认值15.一定使用 varchar ( 20)来储存手机号16.单表索引控制在 5 个之内,单索引字段数不准超出 5 个a)索引的使用。
?b)(1)尽量防止对索引列进行计算。
如计算许多,请提请管理员成立函数索引。
?c)(2)尽量注意比较值与索引列数据种类的一致性。
?d)(3) 关于复合索引, SQL语句一定使用主索引列 ?e)(4) 索引中,尽量防止使用 NULL。
?f)(5) 关于索引的比较,尽量防止使用NOT=( !=) ?g)(6) 查问列和排序列与索引列序次保持一致(7)严禁在更新屡次、划分度不高(如:性别)的字段上成立索引(8)成立组合索引,一定把划分度高的字段放在前面17.严禁使用 SELECT * ,只获得必需的字段18.严禁使用 INSERT INTO t_xxx VALUES(xxx),一定指定插入的列名19.严禁在 WHERE条件的属性上使用函数或表达式20.严禁 %开头的模糊查问21.严禁使用 OR 条件22.应用程序一定捕捉 SQL异样,并作出相应办理23.逻辑删除取代物理删除24.选择最有效的表名、查问条件次序(从右到左)25.减少接见数据库的次数26.SQL中的重点字均使用大写字母,数据表最好起又名27.查问条件中“ >=”取代“ >”28.等号两边使用空格,逗号后使用空格29.多表操作一定使用又名30.整条语句一定写明说明,重点逻辑独自书写说明,说明算法、功能a)说明风格:说明独自成行、放在语句前面。
数据库设计规范及关键要点数据库设计是构建一个高效、可靠的数据库系统的基础。
一个良好的数据库设计能够提高数据的存储和检索效率,降低数据冗余和不一致性的风险,并为后续的应用开发和数据分析提供可靠的数据基础。
在进行数据库设计时,我们需要遵循一些规范和关键要点,下面将详细介绍。
1. 数据库设计规范1.1 数据库结构规范:数据库的结构应该符合正规化原则。
采用正确的范式设计可以降低数据冗余,提高数据一致性。
常用的范式有第一范式(每个属性都是原子的)、第二范式(每个非主属性都完全依赖于候选键)、第三范式(每个非主属性都不传递依赖于候选键)等。
1.2 命名规范:数据库对象(如表、字段、视图等)的命名应该具有一致性和可读性。
命名应该简明扼要,不超过30个字符。
表名应该使用名词复数形式,字段名应该使用名词或形容词。
1.3 数据类型规范:选择恰当的数据类型是保证数据一致性和完整性的关键。
应该根据数据的特性选择适当的数据类型,如字符串、整数、浮点数、日期等。
避免使用通用的数据类型,尽量精确定义字段的类型和长度。
1.4 约束规范:数据库应该添加适当的约束来保证数据的完整性和一致性。
常见的约束包括主键约束、唯一约束、外键约束、检查约束等。
约束的使用可以让数据库在插入、更新和删除数据时自动执行数据验证和引用完整性检查,减少人为错误。
1.5 索引规范:索引在提高数据库的查询性能方面起到重要作用。
合理创建索引可以加快查询速度,减少数据检索时间。
在设计索引时,需要考虑查询的频率、查询字段、表的大小等因素,避免过多或者不必要的索引。
2. 数据库设计关键要点2.1 数据库需求分析:在数据库设计之前,应该充分理解和分析业务需求。
与相关领域的专业人士合作,收集用户需求、功能要求和性能要求等。
需求分析是保证数据库最终满足用户需求的基础。
2.2 数据库概念设计:在数据库概念设计过程中,需要创建实体-关系图(ER图)来描述数据库中的实体、属性和关系。
数据库管理规范在当今数字化的时代,数据已经成为企业和组织的重要资产。
数据库作为数据存储和管理的核心设施,其安全性、完整性和可用性对于业务的正常运行至关重要。
为了确保数据库的高效运行和数据的质量,制定一套科学合理的数据库管理规范是必不可少的。
一、数据库设计规范1、需求分析在设计数据库之前,必须对业务需求进行深入的分析。
了解数据的来源、用途、处理流程以及未来可能的扩展需求,这有助于确定数据库的规模、架构和数据模型。
2、数据模型设计选择合适的数据模型,如关系型模型(如 MySQL、Oracle)或非关系型模型(如 MongoDB、Cassandra),根据业务需求构建表结构。
确保表结构的合理性,避免数据冗余和不一致性。
3、字段设计字段的名称应具有明确的含义,能够准确反映其存储的数据内容。
选择合适的数据类型,既要满足存储需求,又要考虑存储空间的利用率。
对于关键字段,如主键、外键等,要进行合理的定义和约束。
4、索引设计根据查询的频繁程度和性能要求,合理创建索引。
但要注意过多的索引可能会影响数据插入和更新的性能,因此需要权衡利弊。
二、数据库访问规范1、用户权限管理为不同的用户或用户组分配适当的权限,遵循最小权限原则。
例如,普通用户只授予只读权限,而管理员则具有全部权限。
定期审查用户权限,确保权限的分配与用户的职责相符。
2、访问控制通过网络访问数据库时,应采用安全的连接方式,如 SSL 加密。
限制数据库服务器的访问来源,只允许信任的网络地址进行连接。
3、数据查询和更新规范制定查询和更新数据的规范,避免使用复杂的、低效率的查询语句。
对于批量数据操作,要进行充分的测试和评估,以防止对数据库性能造成过大的影响。
三、数据库备份与恢复规范1、备份策略确定合适的备份频率,如每日全量备份、定期增量备份等。
根据数据的重要性和变化频率,制定不同的备份策略。
同时,要将备份数据存储在安全的位置,防止数据丢失或损坏。
2、恢复测试定期进行恢复测试,确保备份数据的可用性和完整性。
数据库规范以下所有规范会按照【⾼危】、【强制】、【建议】三个级别进⾏标注,遵守优先级从⾼到低。
⼀、MySQL数据库设计规范1.1库【建议】名称尽量简洁明义,能够⼀眼看出来这个数据库是⽤来做什么的,库名与应⽤的名称尽量⼀直;【强制】使⽤名词作为数据库名称,并且只⽤英⽂,不⽤中⽂拼⾳;【强制】如果有多个单词,则使⽤下划线隔开,不建义驼峰命名,采⽤26个英⽂字母(区分⼤⼩写)和0-9的⾃然数(经常不需要)加上下划线'_'组成;【强制】创建数据库时必须显式指定字符集,并且字符集只能是utf8mb4除⾮是备份数据库可以加0-9的⾃然数:db_20151210;1.2表【强制】创建表时必须显式指定字符集为utf8mb4。
【建议】创建表时必须显式指定表存储引擎类型,如⽆特殊需求,⼀律为InnoDB。
当需要使⽤除InnoDB/MyISAM/Memory 以外的存储引擎时,必须通过DBA审核才能在⽣产环境中使⽤。
因为Innodb表⽀持事务、⾏锁、宕机恢复、MVCC等关系型数据库重要特性,为业界使⽤最多的MySQL存储引擎。
⽽这是其他⼤多数存储引擎不具备的,因此⾸推InnoDB。
【强制】所有的表都必须有备注,写明⽩这个表中存放的数据内容;【建议】预估表数据量,如果数据量较⼤(超过500w⾏或者单表容量超过 2GB)则需要考虑分表策略。
可以等量均衡分表或根据业务规则分表均可。
(如果预计三年后的数据量根本达不到这个级别,请不要在创建表时就分库分表)【强制】⼀对多,多多的情况下尽量采取A_B=A_B【强制】建表必须有comment【强制】建表时关于主键:(1)强制要求主键为id,类型bigint,且为auto_increment(2)标识表⾥每⼀⾏主体的字段不要设为主键,建议设为其他字段如user_id,order_id等,并建⽴unique key索引(可参考cdb.teacher表设计)。
因为如果设为主键且主键值为随机插⼊,则会导致innodb内部page分裂和⼤量随机I/O,性能下降。
.数据库管理规范版本号:V1.0信息科2017年4月数据库管理规范1 规范说明 (3)2 维护管理安全规范 (3)3设计规范 (4)4. SQL编写规范 (6)5. 数据库备份与恢复策略规范 (7)6开发测试与上线安全规范 (9)7 监控 (9)8连接池使用规范 (10)9 数据库重要级别划分 (10)10 数据库安装规范 (11)11 业务上线数据库部分规范 (12)1 规范说明本规范是针对数据库使用,维护管理,设计开发等。
2 维护管理安全规范2.1数据库版本使用规范【强制】MYSQL使用5.6.39社区版本2.3数据库账户安全与管理规范2.3.1 密码安全【强制】●密码不少于8位,应包含数字,字母,字符●密码不应该和用户名一致●删除数据库默认空用户账户●必须修改root密码2.4账户安全管理【强制】●为应用程序设立独立访问账户●禁止开发工程师通过应用帐号登录生产数据库●禁止QA申请线上账号与使用账号登陆线上环境进行测试●数据库只有root用户具有最高管理权限●备份数据库用户要单独建立,并专属备份恢复操作●数据库安装后删除或锁闭不需要使用的数据库账号●数据库管理员账户可以锁定和解锁其他用户●数据库管理账户在空闲5分钟以上会自动退出●数据库管理权限账号不能超过2个2.5数据库日志管理规范【强制】windows、linux 下的日志管理●Windows系统应开启日志功能,记录系统和系统中各个进程的相关信息●linux的操作系统要开启系统日志●Mysql数据库如果使用了innodb引擎必须打开二进制日志●Mysql必须打开慢日志,并且将慢日志阀值设置为1-2秒之间●对Mysql的错误日志等要进行定期查看,定期清理和定期备份管理2.6数据库架构规范【强制】2.6.1 mysql数据库高可用●MYSQL 采用复制+第三方心跳软件或者第三方集群架构(经测试后)实现近7X24小时高可用性要求,数据库架构必须能够实现故障自动迁移,满足业务7X24小时持续服务要求3设计规范3.1命名规范【强制】3.1.1表的命名表的名称在T_后增加一个或者多个后缀,表名、字段名必须使用小写字母或数字;禁止出现数字开头,禁止两个下划线中间只出现数字。
数据库管理规范一、引言数据库是现代信息系统的重要组成部分,对于保障数据的安全性、完整性和可用性具有重要意义。
为了规范数据库管理工作,提高数据库管理的效率和质量,制定本数据库管理规范。
二、数据库命名规范1. 数据库名称应具有描述性,清晰明了,易于理解和识别;2. 数据库名称应使用小写字母,避免使用特殊字符和空格;3. 数据库名称应遵循公司内部的命名规范,便于统一管理。
三、数据库设计规范1. 数据库设计应符合三范式原则,确保数据的一致性和完整性;2. 数据库表应具有适当的字段注释,方便开发人员理解和维护;3. 数据库表的字段命名应具有描述性,避免使用缩写和无意义的命名;4. 数据库表的主键应使用自增长字段,并设置为非空唯一;5. 数据库表之间的关联应使用外键进行约束,确保数据的一致性。
四、数据库备份与恢复规范1. 定期备份数据库,备份周期根据业务需求确定;2. 备份数据应存储在安全可靠的地方,确保数据的可用性;3. 定期测试数据库备份的恢复能力,确保备份数据的完整性和可用性;4. 备份数据应进行加密存储,防止数据泄露。
五、数据库安全规范1. 数据库应设置强密码策略,密码长度不少于8位,包含大小写字母、数字和特殊字符;2. 数据库应定期更换密码,并限制密码的使用次数和有效期限;3. 数据库应设置账号锁定机制,连续多次登录失败后自动锁定账号;4. 数据库应进行访问控制,只允许授权用户访问数据库;5. 数据库应定期检查和修复安全漏洞,确保数据库的安全性。
六、数据库性能优化规范1. 定期监控数据库的性能指标,如CPU利用率、内存利用率、磁盘空间利用率等;2. 根据监控结果,及时调整数据库的配置参数,优化数据库的性能;3. 避免在数据库中存储大量无用数据,及时清理无效数据;4. 合理使用索引,提高查询效率;5. 避免频繁的数据库连接和断开,使用连接池管理数据库连接。
七、数据库维护规范1. 定期进行数据库的维护工作,包括数据库的压缩、碎片整理等;2. 定期进行数据库的统计分析,了解数据库的使用情况和性能瓶颈;3. 定期进行数据库的版本升级和补丁更新,确保数据库的稳定性和安全性;4. 定期监测数据库的存储空间,避免空间不足导致数据库故障;5. 定期进行数据库的性能测试,评估数据库的性能状况。
数据库相关规范1.使用utf8mb4字符集2.所有表、字段必须写清中文注释3.金额字段禁止使用小数存储(单位:分)4.禁止使用字段属性隐式转换(如:“WHERE ms_no = 1234”ms_no为字符串类型)5.尽量不使用负向查询(NOT、!=、<>、!<、!>、NOT IN、NOT L IKE等)6.禁止使用外键,如有完整性约束,需要应用程序控制7.禁止使用程序配置文件内的账号访问线上数据库8.禁止非DBA对线上数据库进行写操作9.开发、测试、线上环境分离10.所以提交的SQL语句必须经过测试11.禁止存储大文件或大照片12.库名、表名、字段名:小写,下划线分割,不超过32个字符,必须见名知意,禁止拼音英文混用13.表必须有主键14.必须把字段定义为NOT NULL并设置默认值15.必须使用varchar(20)来存储手机号16.单表索引控制在5个以内,单索引字段数不许超过5个a)索引的使用。
?(1) 尽量避免对索引列进行计算。
如计算较多,请提请管理员建立函数索引。
?(2) 尽量注意比较值与索引列数据类型的一致性。
?(3) 对于复合索引,SQL语句必须使用主索引列?(4) 索引中,尽量避免使用NULL。
?(5) 对于索引的比较,尽量避免使用NOT=(!=)?(6) 查询列和排序列与索引列次序保持一致(7) 禁止在更新频繁、区分度不高(如:性别)的字段上建立索引(8) 建立组合索引,必须把区分度高的字段放在前面17.禁止使用SELECT * ,只获取必要的字段18.禁止使用 INSERT INTO t_xxx VALUES(xxx),必须指定插入的列名19.禁止在WHERE条件的属性上使用函数或表达式20.禁止%开头的模糊查询21.禁止使用OR条件22.应用程序必须捕获SQL异常,并作出相应处理23.逻辑删除代替物理删除24.选择最有效的表名、查询条件顺序(从右到左)25.减少访问数据库的次数26.SQL中的关键字均使用大写字母,数据表最好起别名27.查询条件中“>=”代替“>”28.等号两边使用空格,逗号后使用空格29.多表操作必须使用别名30.整条语句必须写明注释,关键逻辑单独书写注释,说明算法、功能a)注释风格:注释单独成行、放在语句前面。
?(1) 应对不易理解的分支条件表达式加注释;?(2) 对重要的计算应说明其功能;?(3) 过长的函数实现,应将其语句按实现的功能分段加以概括性说明;?(4) 每条SQL语句均应有注释说明(表名、字段名)。
?(5) 常量及变量注释时,应注释被保存值的含义(必须),合法取值的范围(可选)?(6) 可采用单行/多行注释。
(-- 或 /* */ 方式)?31.尽量减少使用ORDER BY与GROUP BY操作影响性能32.所有写入上线程序的SQL语句,都必须提取保存并写清注释与所在位置模块33.创建共享SQL语句,并写清帮助文档34.避免变量循环赋值、使用索引设计准则1.应该对 WHERE 子句中经常使用的列创建索引2.应该对经常用于连接表的列创建索引3.应该对 ORDER BY 子句中经常使用的列创建索引4.不应该对小型的表(仅使用几个页的表)创建索引,这是因为完全表扫描操作可能比使用索引执行的查询快5.单表索引数不超过6个6.不要给选择性低的字段建单列索引7.充分利用唯一约束8.索引包含的字段不超过5个(包括include列)9.不要给选择性低的字段创建单列索引10.SQL SERVER对索引字段的选择性有要求,如果选择性太低SQLSERVER会放弃使用11.不适合创建索引的字段:性别、0/1、TRUE/FALSE12.适合创建索引的字段:ORDERID、UID等13.充分利用唯一索引14.唯一索引给SQL Server提供了确保某一列绝对没有重复值的信息,当查询分析器通过唯一索引查找到一条记录则会立刻退出,不会继续查找索引15.表索引数不超过6个16.表索引数不超过6个(这个规则只是携程DBA经过试验之后制定的。
)17.索引加快了查询速度,但是却会影响写入性能18.一个表的索引应该结合这个表相关的所有SQL综合创建,尽量合并19.组合索引的原则是,过滤性越好的字段越靠前20.索引过多不仅会增加编译时间,也会影响数据库选择最佳执行计划SQL查询1.禁止在数据库做复杂运算2.禁止使用SELECT *3.禁止在索引列上使用函数或计算4.禁止使用游标5.禁止使用触发器6.禁止在查询里指定索引7.变量/参数/关联字段类型必须与字段类型一致8.限制JOIN个数9.限制SQL语句长度及IN子句个数10.尽量避免大事务操作11.关闭影响的行计数信息返回12.使用UNION ALL替换UNION13.查询大量数据使用分页或TOP14.递归查询层级限制15.NOT EXISTS替代NOT IN16.尽量避免使用OR运算符17.增加事务异常处理机制禁止在数据库做复杂运算1.XML解析2.字符串相似性比较3.字符串搜索(Charindex)4.复杂运算在程序端完成5.禁止使用SELECT *6.减少内存消耗和网络带宽7.给查询优化器有机会从索引读取所需要的列8.表结构变化时容易引起查询出错禁止在索引列上使用函数或计算假设在字段Col1上建有一个索引,则下列场景将可以使用到索引:[Col1]=[Col1]>100[Col1] BETWEEN 0 AND 99[Col1] LIKE ‘abc%’[Col1] IN(2,3,5,7)LIKE查询的索引问题1.[Col1] like “abc%”? –index seek ?这个就用到了索引查询2.[Col1] like “%abc%”? –index scan ?而这个就并未用到索引查询3.[Col1] like “%abc”? –index scan 这个也并未用到索引查询我想从上而三个例子中,大家应该明白,最好不要在LIKE条件前面用模糊匹配,否则就用不到索引查询。
禁止使用游标关系数据库适合集合操作,也就是对由WHERE子句和选择列确定的结果集作集合操作,游标是提供的一个非集合操作的途径。
一般情况下,游标实现的功能往往相当于客户端的一个循环实现的功能。
游标是把结果集放在服务器内存,并通过循环一条一条处理记录,对数据库资源(特别是内存和锁资源)的消耗是非常大的。
禁止使用触发器触发器对应用不透明(应用层面都不知道会什么时候触发触发器,发生也也不知道,感觉莫名……)禁止在查询里指定索引With(index=XXX)(?在查询里我们指定索引一般都用With(index=XXX) ??)随着数据的变化查询语句指定的索引性能可能并不最佳索引对应用应是透明的,如指定的索引被删除将会导致查询报错,不利于排障新建的索引无法被应用立即使用,必须通过发布代码才能生效变量/参数/关联字段类型必须与字段类型一致避免类型转换额外消耗的CPU,引起的大表scan尤为严重限制JOIN个数单个SQL语句的表JOIN个数不能超过5个过多的JOIN个数会导致查询分析器走错执行计划过多JOIN在编译执行计划时消耗很大限制IN子句中条件个数在 IN 子句中包括数量非常多的值(数以千计)可能会消耗资源并返回错误 8623 或 8632,要求IN子句中条件个数限制在100个以内尽量避免大事务操作只在数据需要更新时开始事务,减少资源锁持有时间增加事务异常捕获预处理机制使用UNION ALL替换UNIONUNION会对SQL结果集去重排序,增加CPU、内存等消耗查询大量数据使用分页或TOP合理限制记录返回数,避免IO、网络带宽出现瓶颈递归查询层次限制来防止不合理的递归 CTE 进入无限循环使用 MAXRECURSION尽量避免使用OR运算符对于OR运算符,通常会使用全表扫描,考虑分解成多个查询用UNION/UNION ALL来实现,这里要确认查询能走到索引并返回较少的结果集增加事务异常处理机制应用程序做好意外处理,及时做Rollback。
设置连接属性“set xact_abort on”架构设计读写分离schema解耦数据生命周期读写分离设计之初就考虑读写分离,哪怕读写同一个库,有利于快速扩容按照读特征把读分为实时读和可延迟读分别对应到写库和读库读写分离应该考虑在读不可用情况下自动切换到写端Schema解耦禁止跨库JOIN数据生命周期根据数据的使用频繁度,对大表定期分库归档主库/归档库物理分离日志类型的表应分区或分表对于大的表格要进行分区,分区操作将表和索引分在多个分区,通过分区切换能够快速实现新旧分区替换,加快数据清理速度,大幅减少IO资源消耗频繁写入的表,需要分区或分表注释范例?过程注释:过程都以sp_开头,注意过程名称要符合命名要求?参数:p_变量名_in(传入)、p_变量名_out(传出)游标:cur_变量名/**************************************************************************?name:sp_Write_logparameter:p_textContext_in in varchar2 参数描述? parameter:p_textContext_out out varchar2 参数描述? create date:2003-04-1?creater:创建人员desc:过程总功能描述?****************************************************************************/?函数注释:函数以f开头,命名符合命名标准/**************************************************************************?name:f_Get_JobId?parameter:p_Name in varchar2 参数描述return number:返回值描述create date:2003-04-1?creater: 创建人员?desc:函数总功能描述?*********************************************************** *****************/视图注释?:视图以v开头,命名符合命名标准?/********************************************************** ****************name:v_Unit_Ms?parameter:p_Name in varchar2 参数描述? create date:2003-04-1?creater: 创建人员desc:视图描述*********************************************************** *****************/-- SQL语句编写格式样例-- 关键词换行,换行后空两个空格SELECT, -- 用户名称,,COUNT(1) trueworkload -- 单位缴费个人帐户个数FROMt_systemuserinfo ts, -- 医疗保险单位缴费表t_genworkflow tg,t_batch tb,t_companyinfotmp tc,(SELECT DISTINCTbatchid,companyid,userid,direction,fromwkfid,towkfidFROMT_WorkflowLogWHEREdotime BETWEEN '2008-09-02'AND '2008-09-03' -- 医疗保险缴费时间) AS twflWHERE=AND =AND =AND =AND = 1 -- 人员类别(1:正式员工)AND =GROUP BY,,,;。