博客
关于我
MySQL优化之推荐使用规范
阅读量:788 次
发布时间:2023-02-11

本文共 1281 字,大约阅读时间需要 4 分钟。

数据库设计规范指南

一、基础规范

在数据库设计中,我们遵循以下原则以确保高效稳定运行:

  • 存储引擎选择:使用InnoDB存储引擎。这种引擎支持事务、行级锁和高效的并发性能,且CPU和内存缓存机制优化了资源利用率。

  • 字符集设置:推荐使用utf8mb4字符集。这种字符集无需转码,避免乱码风险,同时支持包含emoji表情和部分不常见汉字。

  • 注释规范:表和字段必须添加注释。清晰的注释有助于让其他开发人员理解字段功能,尤其在后期维护时至关重要。

  • 计算字段禁止:禁止在数据库中执行计算。存储过程、视图、触发器和Event等功能应尽量避免,尤其在高并发情况下,这些功能可能导致数据库性能下降。

  • 文件存储管理:文件应存储在文件系统中,而不是数据库内。数据库内存储URI链接以避免占用过多磁盘空间。

  • 数据量控制:单表记录数量应控制在千万级以内,以确保数据库运行效率。

  • 二、命名规范

    规范命名有助于提高代码可读性和维护性:

  • 命名风格:库名、表名和字段名应采用小写且下划线分隔的命名方式。索引名应区分为非唯一索引(idxxxx)和唯一索引(uniqxxx)。

  • 主键设置:每个表必须有主键,通常采用自增主键。选择较短的数据类型可减少索引占用,提高查询性能。

  • 外键管理:避免使用数据库外键约束。外键控制应通过应用程序实现,以减少耦合度和性能开销。

  • 三、字段设计规范

    字段设计需考虑数据存储和查询优化:

  • 字段类型选择:字段应定义为NOT NULL,并提供默认值。null值会增加索引和查询复杂性,影响性能。

  • 避免大数据类型:禁止使用TEXT和BLOB类型。如需存储大文本信息,建议单独创建表,并通过主键关联。

  • 货币处理:使用整数存储货币,避免小数带来的精度问题。

  • 手机号存储:使用varchar类型存储手机号码,以支持数学运算和格式化显示。

  • 冗余数据设计:在范式设计中适当添加冗余字段,尤其是那些不经常修改的字段,以提高查询性能。

  • 四、索引设计规范

    合理设计索引可显著提升查询性能:

  • 索引位置:在更新频繁或区分度较低的属性上禁止建立索引。例如,“性别”字段不需要索引。

  • 组合索引:确保高区分度字段位于索引的最左边。组合索引可提升查询性能,但需谨慎选择字段。

  • 搜索优化:禁止左模糊或全模糊查询。建议使用搜索引擎功能解决这些情况。

  • 五、SQL使用规范

    编写高效SQL语句是数据库性能的关键:

  • 查询优化:禁止使用SELECT *,只获取必要字段,并明确列属性。

  • 插入操作:使用INSERT INTO t_xxx VALUES(xxx)时,需显示指定列属性。

  • 比较操作:请使用“同类型”比较,避免全表扫描。

  • 函数和计算:避免在WHERE条件中使用函数或计算。推荐使用日期范围查询。

  • 查询防范:禁止负向查询和模糊查询(如%开头的条件)。

  • 大数据查询:避免使用JOIN和子查询,以免占用大量内存。

  • 事务设计:保持事务粒度尽可能小,避免一次更新大量数据。

  • 数据更新:分批次更新数据,减少锁级别对数据库性能的影响。

  • 通过遵循以上规范,我们可以设计出高效、稳定的数据库系统,确保在高并发场景下也能良好运行。

    转载地址:http://habfk.baihongyu.com/

    你可能感兴趣的文章
    MySQL —— 在CentOS9下安装MySQL
    查看>>
    mysql 不区分大小写
    查看>>
    mysql 两列互转
    查看>>
    MySQL 中开启二进制日志(Binlog)
    查看>>
    MySQL 中文问题
    查看>>
    MySQL 中日志的面试题总结
    查看>>
    MySQL 中随机抽样:order by rand limit 的替代方案
    查看>>
    MySQL 为什么需要两阶段提交?
    查看>>
    mysql 为某个字段的值加前缀、去掉前缀
    查看>>
    mysql 主从 lock_mysql 主从同步权限mysql 行锁的实现
    查看>>
    mysql 主从互备份_mysql互为主从实战设置详解及自动化备份(Centos7.2)
    查看>>
    mysql 主键重复则覆盖_数据库主键不能重复
    查看>>
    Mysql 优化 or
    查看>>
    mysql 优化器 key_mysql – 选择*和查询优化器
    查看>>
    MySQL 优化:Explain 执行计划详解
    查看>>
    Mysql 会导致锁表的语法
    查看>>
    mysql 使用sql文件恢复数据库
    查看>>
    mysql 修改默认字符集为utf8
    查看>>
    Mysql 共享锁
    查看>>
    MySQL 内核深度优化
    查看>>