找 mysql 瓶颈_找到 MySQL 的瓶颈_MySQL

瓶颈

对于项目的最终瓶颈是什么,我想大多数程序员已经达成了共识,是数据库。

不论你使用哪种数据库,问题似乎最终都会回到这里。

首先,我们来分析一下导致瓶颈的主要原因:查询次数太多;

返回的结果集太大;

查询太复杂;

数据更新表锁,导致查询堵塞;

软硬件环境限制,如最大连接数限制、IO限制、硬件资源限制;

针对这些问题,又有那些应对方法呢?减少和合并查询;

减少查询字段,使用 LIMIT 拆分为多次查询;

简化和拆分查询,优化索引;

优化数据库软件配置;

分布和缓存;

表结构

数据库表的结构,不仅仅能够决定数据表所占用的空间,对查询效率有着显著的影响。

选择精确合理的字段类型

选择合适的字段类型,是表设计的最基本要求。合适的类型,不仅能够减少表占用的空间,而且能增加查询效率。

举个例子,存储时间(0000-00-00 00:00:00),你会使用 Char(19) 还是 DATETIME 呢?

你应该并必须选择后者,因为 DATETIME 在 MySQL 中几乎等同于数字,可以方便的运算、比较大小、被索引,以及比字符型占用更小的空间,查询效率甩出使用字符型几条街。

在数据库的其他条件已经决定的条件下,表的尺寸越小,查询越快,这几乎是一条定理。

所以,在设计表的时候,应该吝啬的使用更精确的字段类型。

考虑扩展性

这涉及到了程序设计的范畴,但同样也是表设计重要的一方面。

如果你设计一个用户表,表中涉及到权限的管理,目前只有发帖、回帖、删帖三类权限,你会怎么设计?

你是会使用canPost、canReply、canDelete三个字段来标识权限,还是使用位运算方式用一个权限字段?

实际上没有谁对谁错,但是我认为第二种方式扩展性更好一点,如果需求更改,又增加3种权限,第一种方式需要修改程序和数据表,第二种方式只需要程序调整。

扩展性是表设计的一个重要考量,一定要留有余地,但也要避免过度设计。

选择合适的字段类型,是表设计的最基本要求。合适的类型,不仅能够减少表占用的空间,而且能增加查询效率。

两个表分别用

对于项目的最终瓶颈是什么,我想大多数程序员已经达成了共识,是数据库。

不论你使用哪种数据库,问题似乎最终都会回到这里。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值