浅谈数据库优化

本文主要探讨了数据库优化的三个方面:DBMS选择、表设计优化和逻辑与物理查询优化。在DBMS选择中,提到了MySQL、Oracle和SQL Server等,并强调了NoSQL的选择。在表设计中,强调遵循第三范式,合理选择数据类型,以及使用索引来提高查询效率。在查询优化方面,提出了避免全表扫描、合理使用索引、避免在WHERE子句中使用OR、LIKE和函数等建议。
摘要由CSDN通过智能技术生成

SQL优化

在这里插入图片描述

一、DBMS选择

  • MySQL、Oracle、SQL server等根据需求选择

    ​ 在RDBMS中,常用的有Oracle、SQL Server和Mysql等。如果对事务处理和安全性要求高的话,可以选择商业性的数据库产品。这些数据库在事务处理和查询性能上都比较强,比如采用SQL Server,那么单表存储上亿条数据是没有问题的。如果数据表设计的好即使不使用分库分表的方式,查询效率也不差。
    ​ 除此以外,也可以采用开源的 MySQL 进行存储,它有很多存储引擎可以选择,如果进行事务处理的话可以选择 InnoDB,非事务处理可以选择 MyISAM。
    ​ NoSQL 阵营包括键值型数据库(Key-Value)文档型数据库搜索引擎列式存储图形数据库。这些数据库的优缺点和使用场景各有不同,比如列式存储数据库可以大幅度降低系统的 I/O,适合于分布式文件系统和 OLAP,但如果数据需要频繁地增删改,那么列式存储就不太适用了。

在这里插入图片描述

​ DBMS 的选择关系到了后面的整个设计过程,所以第一步就是要选择适合的 DBMS。如果已经确定好了 DBMS,那么这步可以跳过,但有时候我们要根据业务需求来进行选择。

系统配置maxconnection

二、优化表设计

  • 表的设计原则

    • 表结构要尽量遵循第三范式的原则这样可以让数据结构更加清晰规范,减少冗余字段,同时也减少了在更新,插入和删除数据时等异常情况的发生。

    • 如果分析查询应用比较多,尤其是需要进行多表联查的时候,可以采用反范式进行优化。反范式采用空间换时间的方式,通过增加冗余字段提高查询的效率。

    • 表字段的数据类型选择,数据库操作中最为耗时的操作就是 IO 处理,大部分数据库操作 90% 以上的时间都花在了 IO 读写上面。所以尽可能减少 IO 读写量,可以在很大程度上提高数据库操作的性能。

      • 数字类型选择

        ​ 非万不得已不要使用DOUBLE,不仅仅只是存储长度的问题,同时还会存在精确性的问题。同样,固定精度的小数,也不建议使用DECIMAL,建议乘以固定倍数转换成整数存储,可以大大节省存储空间,且不会带来任何附加维护成本。对于整数的存储,在数据量较大的情况下,建议区分开 TINYINT / INT / BIGINT 的选择,因为三者所占用的存储空间也有很大的差别,能确定不会使用负数的字段,建议添加unsigned定义。当然,如果数据量较小的数据库,也可以不用严格区分三个整数类型。

      • 时间类型

        ​ 尽量使用TIMESTAMP类型,因为其存储空间只需要 DATETIME 类型的一半。对于只需要精确到某一天的数据类型,建议使用DATE类型,因为他的存储空间只需要3个字节,比TIMESTAMP还少。不建议通过 INT类型类存储一个unix timestamp 的值,因为这太不直观,会给维护带来不必要的麻烦,同时还不会带来任何好处。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值