`
ssxxjjii
  • 浏览: 948333 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

数据库相关规范建议

 
阅读更多

核心

  (1)不在数据库做运算cpu计算务必移至业务层

  (2)控制单表数据量:单表记录控制在1000w

  (3)控制列数量:字段数控制在20以内

  (4)平衡范式与冗余:为提高效率牺牲范式设计,冗余数据

  (5)拒绝3B:拒绝大sql,大事物,大批量

字段类

  (1)用好数值类型

       tinyint(1Byte)

       smallint(2Byte)

       mediumint(3Byte)

       int(4Byte)

       bigint(8Byte)

       bad case:int(1)/int(11)

  (2)字符转化为数字 

       用int而不是char(15)存储ip

  (3)优先使用enum或set

       例如:`sex` enum (‘F’, ‘M’)

  (4)避免使用NULL字段

       NULL字段很难查询优化

       NULL字段的索引需要额外空间

       NULL字段的复合索引无效

       bad case:

           `name` char(32) default null

           `age` int not null

       good case:

           `age` int not null default 0

  (5)少用text/blob

       varchar的性能会比text高很多

       实在避免不了blob,请拆表

  (6)不在数据库里存图片

索引类

  (1)谨慎合理使用索引

       改善查询、减慢更新

       索引一定不是越多越好(能不加就不加,要加的一定得加)

       覆盖记录条数过多不适合建索引,例如“性别”

  (2)字符字段必须建前缀索引

  (3)不在索引做列运算

       bad case:

       select id where age +1 = 10;

  (4)innodb主键推荐使用自增列

      主键建立聚簇索引

      主键不应该被修改

      字符串不应该做主键

      如果不指定主键,innodb会使用唯一且非空值索引代替

  (5)不用外键

      请由程序保证约束

sql类

  (1)sql语句尽可能简单

       一条sql只能在一个cpu运算

       大语句拆小语句,减少锁时间

       一条大sql可以堵死整个库

  (2)简单的事务

      事务时间尽可能短

      bad case:

        上传图片事务

  (3)避免使用trig/func

      触发器、函数不用

      客户端程序取而代之

  (4)不用select *

      消耗cpu,io,内存,带宽

      这种程序不具有扩展性

  (5)OR改写为IN()

      or的效率是n级别

      in的消息时log(n)级别

      in的个数建议控制在200以内

      select id from t where phone=’159′ or phone=’136′;

        =>

      select id from t where phone in (’159′, ’136′);

  (6)OR改写为UNION

       mysql的索引合并很弱智

       select id from t where phone = ’159′ or name = ‘john’;

        =>

       select id from t where phone=’159′

       union

       select id from t where name=’jonh’

  (7)避免负向%

  (8)慎用count(*)

  (9)limit高效分页

       limit越大,效率越低

       select id from t limit 10000, 10;

           =>

       select id from t where id > 10000 limit 10;

  (10)使用union all替代union

       union有去重开销

  (11)少用连接join

  (12)使用group by

       分组

       自动排序

  (13)请使用同类型比较

  (14)使用load data导数据

       load data比insert快约20倍;

  (15)打散批量更新

分享到:
评论

相关推荐

    数据库命名规范(通用)

    数据库命名规范是数据库管理中的重要组成部分,它不仅有助于维护数据库的整洁和一致,还能提高开发人员之间的...以上原则和建议构成了一个通用的数据库命名规范,有助于数据库管理的规范化和提高数据库系统的可维护性。

    数据库设计开发规范-阿里.pdf

    该文档涵盖了Oracle和MySQL两大主流数据库系统的具体规范,并针对每种数据库的特点提出了相应的设计和开发建议。 #### 二、数据库整体设计规范 ##### (一)Oracle **1. 设计** - **避免多数据库间通过DBLINK...

    Oracle数据库设计规范

    Oracle数据库设计规范是数据库设计人员在构建高效、稳定和易于维护的数据存储系统时的重要参考。规范的目的是确保设计的合理性和一致性,预防由于设计不当引发的问题,并通过良好的设计习惯提升软件质量。 首先,...

    数据库编码规范Database Code Conventions

    本规范适用于所有数据库相关的编码活动,包括但不限于数据库表的设计、视图、索引、存储过程、触发器、函数以及其他数据库对象的创建和维护。无论是新建项目还是对已有数据库进行改造,都应该参照这些规范进行。 **...

    8数据库设计规范.doc

    《8数据库设计规范》文档是针对Oracle数据库设计的一份详细指南,旨在确保系统设计的统一、稳定和优化。本文档的编写目的是为了提供一套标准,让开发者在利用Oracle数据库进行系统设计时,能够遵循一致的规则,从而...

    sql数据库设计规范

    SQL 数据库设计规范 SQL 数据库设计规范是指在设计和开发数据库时的一系列规则和惯例,以确保数据库的正确性、安全性和可维护性。本规范涵盖了数据库设计的各个方面,包括编程规范、注释规范、标识符命名规范等。 ...

    oracle数据库设计规范

    ### Oracle数据库设计规范知识点 #### 一、数据库设计规范概览 Oracle数据库设计规范旨在为数据库设计、规划、开发及维护提供技术参考。规范涵盖了物理设计原则与逻辑设计原则两个方面,确保数据库系统的高效稳定...

    数据库命名规范!数据库命名规范

    在IT行业中,数据库命名规范是确保数据库设计清晰、易读、易维护的关键因素。遵循一套良好的命名规则可以提高代码的可读性,减少误解,同时也有助于团队协作和后期的数据库优化。以下是一些关于数据库命名规范的重要...

    MSSQL SERVER数据库开发规范

    在构建统一的数据库代码规范时,命名规范是至关重要的,因为它直接关系到数据库的易读性和后续的维护工作。MSSQL Server作为广泛使用的数据库管理系统,需要遵循一套明确的命名规则来保证开发的一致性和规范性。 ...

    oracle数据库编程规范

    根据提供的文件信息,本文将详细解析“Oracle数据库编程规范”的主要知识点,包括概述、书写规范、命名规范、注释规范、语法规范、脚本规范、性能优化、设计规范以及文档规范等内容。 ### 第一部分 概述 #### 1.1 ...

    数据库设计规范 手册 指导

    数据库设计是构建高效、稳定、可扩展的信息系统的基础,它涉及到多个方面的规范和原则。本手册将深入探讨数据库设计规范,旨在提供一个清晰的指导框架,确保数据库的命名、字段设计以及文档编制符合最佳实践。 首先...

    数据库技术规范.docx

    数据库技术规范是确保数据存储、管理和检索效率的重要准则,对于任何组织来说,遵循这些规范都是确保数据库性能和数据完整性的关键。本文档主要涵盖了多个方面的内容,包括建表规范、使用范围、概述、书写规则、注释...

    Oracle数据库设计规范建议.pdf

    在命名规范方面,建议使用清晰的英文单词,避免使用拼音或拼音缩写,所有对象名称应统一为大写,以减少大小写敏感带来的困扰。对于表的命名,推荐使用前缀,如_T表示表,以便区分不同项目、子系统或模块的表。视图、...

    Oracle数据库设计规范建议.doc

    Oracle数据库设计规范旨在确保数据库设计的质量,预防潜在问题,并培养良好的编程习惯,从而提升软件的可靠性。规范涵盖了命名规范、设计原则等多个方面,适用于所有应用开发人员和参与数据库应用开发的软件人员。 ...

    数据库开发规范(Oracle)

    数据库开发规范是确保数据库设计和操作的一致性、可维护性和高效性的关键准则。在Oracle数据库环境下,遵循一套良好的开发规范对于提升系统性能、保证数据安全以及简化后期维护至关重要。以下将详细介绍标题和描述中...

    MYSQL数据库设计规范.docx

    本文将详细介绍一份针对MySQL数据库设计的规范文档,该文档根据重要程度分为【高危】、【强制】和【建议】三个级别,旨在帮助技术人员做出最适合线上业务需求的设计。 #### 二、基础规范 **1. 使用InnoDB存储引擎*...

Global site tag (gtag.js) - Google Analytics