SQL调优

利用基准测试和性能分析来模拟和发现系统瓶颈很重要。

基准测试 - 用 ab 等工具模拟高负载情况。
性能分析 - 通过启用如慢查询日志等工具来辅助追踪性能问题。

基准测试和性能分析可能会指引你到以下优化方案。
改进模式

1、为了实现快速访问,MySQL 在磁盘上用连续的块存储数据。
2、使用 CHAR 类型存储固定长度的字段,不要用 VARCHAR。CHAR 在快速、随机访问时效率很高。如果使用 VARCHAR,如果你想读取下一个字符串,不得不先读取到当前字符串的末尾。
3、使用 TEXT 类型存储大块的文本,例如博客正文。TEXT 还允许布尔搜索。使用 TEXT 字段需要在磁盘上存储一个用于定位文本块的指针。
4、使用 INT 类型存储高达 2^32 或 40 亿的较大数字。
5、使用 DECIMAL 类型存储货币可以避免浮点数表示错误。
6、避免使用 BLOBS 存储对象,存储存放对象的位置。
7、VARCHAR(255) 是以 8 位数字存储的最大字符数,在某些关系型数据库中,最大限度地利用字节。
8、在适用场景中设置 NOT NULL 约束来提高搜索性能。

使用正确的索引

1、你正查询(SELECT、GROUP BY、ORDER BY、JOIN)的列如果用了索引会更快。
2、索引通常表示为自平衡的 B 树,可以保持数据有序,并允许在对数时间内进行搜索,顺序访问,插入,删除操作。
3、设置索引,会将数据存在内存中,占用了更多内存空间。
4、写入操作会变慢,因为索引需要被更新。
5、加载大量数据时,禁用索引再加载数据,然后重建索引,这样也许会更快。

避免高成本的联结操作

1、有性能需要,可以进行非规范化。

分割数据表

1、将热点数据拆分到单独的数据表中,可以有助于缓存。

调优查询缓存

1、在某些情况下,查询缓存可能会导致性能问题。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值