MYSQL优化思路

MYSQL优化概述

一、在数据库级别进行优化

使数据库应用程序快速运行的最重要因素是其基本设计,在数据库层面,我们往往可以从以下几个方面下手:

1.表结构合理吗?
每个列是否具有正确的数据类型
每个表是否具有适合工作类型的列
例如,执行频繁更新的应用程序通常具有许多具有少量列的表,而分析大量数据的应用程序通常具有很少列的表。

2.是否有适当的索引来提高查询效率?

3.是否为每个表使用适当的存储引擎?(例如事务性存储引擎InnoDB和非事务性存储引擎MyISAM的选择对于性能和可伸缩性来说非常重要。)
注意:
InnoDB是新表的默认存储引擎。
实际上,高级 InnoDB性能特征意味着 InnoDB表通常优于更简单的MyISAM表,尤其是对于繁忙的数据库。

4.每个表是否使用适当的行格式?

5.是否使用适当的锁定策略?

6.是否正确使用了用于缓存的所有内存区域?
足够大以容纳频繁访问的数据,但不能太大以至于它们会超载物理内存并导致分页。要配置的主要内存区域是InnoDB缓冲池和MyISAM密钥缓存。

二、在硬件级别进行优化

随着数据库变得越来越繁忙,任何数据库应用程序最终都会达到硬件限制。DBA必须评估是否可以调整应用程序或重新配置服务器以避免这些 瓶颈,或者是否需要更多硬件资源。系统瓶颈通常来自这些来源:

1.磁盘寻找
磁盘需要一段时间才能找到一块数据。对于现代磁盘,平均时间通常低于10毫秒,因此我们理论上可以做到大约100次寻找。这个时间用新磁盘慢慢改善,并且很难针对单个表进行优化。优化寻道时间的方法是将数据分配到多个磁盘上。

2.磁盘读写
当磁盘位于正确位置时,我们需要读取或写入数据。使用现代磁盘,一个磁盘可提供至少10-20MB / s的吞吐量。这比搜索更容易优化,因为可以从多个磁盘并行读取。

3.CPU周期
当数据在主存储器中时,我们必须处理它以获得我们的结果。与内存量相比具有大表是最常见的限制因素。但是对于小表,速度通常不是问题。

4.内存带宽
当CPU需要的数据量超过CPU缓存容量时,主内存带宽成为瓶颈。对于大多数系统来说,这是一个不常见的瓶颈,但依然需要注意

三、平衡可移植性和性能

要在可移植的MySQL程序中使用面向性能的SQL扩展,您可以在/*! */注释分隔符的语句中包含特定于MySQL的关键字。其他SQL服务器忽略注释的关键字

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值