青训营项目开发总结| 青训营笔记

78 阅读2分钟

这是我参与「第三届青训营 -后端场」笔记创作活动的第五篇笔记。

由于服务端需要大量对数据库CURD的操作,于是笔者对SQL优化进行了初步的学习,本篇文章对此做下记录。

关于MySql的性能优化,常用的有以下几种方法:

  • 数据库表的设计

之所以写下这一点,是因为笔者在开发粉丝关注列表这个接口的时候,是设计了一张“粉丝表”和一张“关注表”,其中”粉丝表"存储用户Id和被关注的用户Id,而关注表则存储用户Id和该用户关注的用户的Id(是不是很绕?)在执行关注和取关操作时,需要同时更新这两张表。后面将两张表合并成一张Relation表,表中主要存放三个字段,user_id和to_user_id以及action_type用来表示一个用户对另一个用户执行的操作,在关注和取关操作中,只需要在这一张表中增加记录即可。

  • 事务

事务是数据库常见的优化方法,在有些情况下,数据库操作并不是一两句SQL语句就能完成,那么,在这种情况下,当执行某个功能所需要的一组语句中的某个语句发生错误时,操作的结果就变得不确定甚至不可知。如果引入事务,则可以保证数据库中的数据一致性和完整性,事务中的语句要么一连串都执行成功,要么在某一错误发生时,将数据库回滚,该组语句都不执行。

  • 使用Limit

一句简单的查询语句,可能只有一条结果,在不加Limit情况下,Mysql数据库引擎会遍历表中的每一条数据,加上Limit之后,在检索到需要的数据时会完成搜索,显而易见,这样做能够带来性能提升。

  • 使用合适的字段属性

基于上一点提到的数据库引擎往往需要对表中的数据进行遍历,由此,我们可以通过使用合适的字段属性,例如缩短某个字段属性的长度等,来减少表中数据的大小,这样也能够提升性能。

  • 建立索引

当某一个字段需要频繁地被搜索时,可以通过为该字段添加索引的方式,提升效率。Mysql数据库引擎在搜索时总是从表的第一行数据开始搜索,而建立了索引之后,引擎会搜索特定行,进而提升性能。

当然,以上只是项目中主要会用到的优化方法,实际上MySQL还会有更多更复杂的优化方法,感兴趣的读者可以查阅其他资料进行学习。