首页数据库mysql数据库配置优化(mysql 优化包括哪些内容)

mysql数据库配置优化(mysql 优化包括哪些内容)

编程之家2023-10-2299次浏览

其实mysql数据库配置优化的问题并不复杂,但是又很多的朋友都不太了解mysql 优化包括哪些内容,因此呢,今天小编就来为大家分享mysql数据库配置优化的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!

mysql数据库配置优化(mysql 优化包括哪些内容)

mysql 优化包括哪些内容

mysql的优化大的有两方面:

1、配置优化

配置的优化其实包含两个方面的:操作系统内核的优化和mysql配置文件的优化

1)系统内核的优化对专用的mysql服务器来说,无非是内存实用、连接数、超时处理、TCP处理等方面的优化,根据自己的硬件配置来进行优化,这里不多讲;

2)mysql配置的优化,一般来说包含:IO处理的常用参数、最大连接数设置、缓存使用参数的设置、慢日志的参数的设置、innodb相关参数的设置等,如果有主从关系在设置主从同步的相关参数即可,网上的相关配置文件很多,大同小异,常用的设置大多修改这些差不多就够用了。

2、sql语句的优化

mysql数据库配置优化(mysql 优化包括哪些内容)

1、尽量稍作计算

Mysql的作用是用来存取数据的,不是做计算的,做计算的话可以用其他方法去实现,mysql做计算是很耗资源的。

2.尽量少 join

MySQL的优势在于简单,但这在某些方面其实也是其劣势。MySQL优化器效率高,但是由于其统计信息的量有限,优化器工作过程出现偏差的可能性也就更多。对于复杂的多表 Join,一方面由于其优化器受限,再者在 Join这方面所下的功夫还不够,所以性能表现离 Oracle等关系型数据库前辈还是有一定距离。但如果是简单的单表查询,这一差距就会极小甚至在有些场景下要优于这些数据库前辈。

mysql数据库配置优化(mysql 优化包括哪些内容)

3.尽量少排序

排序操作会消耗较多的 CPU资源,所以减少排序可以在缓存命中率高等 IO能力足够的场景下会较大影响 SQL的响应时间。

对于MySQL来说,减少排序有多种办法,比如:

通过利用索引来排序的方式进行优化

减少参与排序的记录条数

非必要不对数据进行排序

4.尽量避免 select*

在数据量少并且访问量不大的情况下,select*没有什么影响,但是量级达到一定级别的时候,在执行效率和IO资源的使用上,还是有很大关系的,用什么字段取什么字段,减少不必要的资源浪费。

之前遇到过因为一个字段存储的数据比较大,并发高的情况下把网络带宽跑满的情况,造成网站打不开或是打开速度极慢的情况。

5.尽量用 join代替子查询

虽然 Join性能并不佳,但是和 MySQL的子查询比起来还是有非常大的性能优势。MySQL的子查询执行计划一直存在较大的问题,虽然这个问题已经存在多年,但是到目前已经发布的所有稳定版本中都普遍存在,一直没有太大改善。虽然官方也在很早就承认这一问题,并且承诺尽快解决,但是至少到目前为止我们还没有看到哪一个版本较好的解决了这一问题。

6.尽量少 or

当 where子句中存在多个条件以“或”并存的时候,MySQL的优化器并没有很好的解决其执行计划优化问题,再加上 MySQL特有的 SQL与 Storage分层架构方式,造成了其性能比较低下,很多时候使用 union all或者是union(必要的时候)的方式来代替“or”会得到更好的效果。

7.尽量用 union all代替 union

union和 union all的差异主要是前者需要将两个(或者多个)结果集合并后再进行唯一性过滤操作,这就会涉及到排序,增加大量的 CPU运算,加大资源消耗及延迟。所以当我们可以确认不可能出现重复结果集或者不在乎重复结果集的时候,尽量使用 union all而不是 union。

8.尽量早过滤

这一优化策略其实最常见于索引的优化设计中(将过滤性更好的字段放得更靠前)。

在 SQL编写中同样可以使用这一原则来优化一些 Join的 SQL。比如我们在多个表进行分页数据查询的时候,我们最好是能够在一个表上先过滤好数据分好页,然后再用分好页的结果集与另外的表 Join,这样可以尽可能多的减少不必要的 IO操作,大大节省 IO操作所消耗的时间。

9.避免类型转换

这里所说的“类型转换”是指 where子句中出现 column字段的类型和传入的参数类型不一致的时候发生的类型转换:

A:人为在column_name上通过转换函数进行转换

直接导致 MySQL(实际上其他数据库也会有同样的问题)无法使用索引,如果非要转换,应该在传入的参数上进行转换

B:由数据库自己进行转换

如果我们传入的数据类型和字段类型不一致,同时我们又没有做任何类型转换处理,MySQL可能会自己对我们的数据进行类型转换操作,也可能不进行处理而交由存储引擎去处理,这样一来,就会出现索引无法使用的情况而造成执行计划问题。

以上两种情况在开发者因为某种原因经常会有,本来可以用到索引的结果类型不对没有用到索引,或是因为类型不对又有越界的情况发生造成无法使用索引的情况,结果造成很严重的事故。

10.优先优化高并发的 SQL,而不是执行频率低某些“大”SQL

对于破坏性来说,高并发的 SQL总是会比低频率的来得大,因为高并发的 SQL一旦出现问题,甚至不会给我们任何喘息的机会就会将系统压跨。而对于一些虽然需要消耗大量 IO而且响应很慢的 SQL,由于频率低,即使遇到,最多就是让整个系统响应慢一点,但至少可能撑一会儿,让我们有缓冲的机会。

11.从全局出发优化,而不是片面调整

SQL优化不能是单独针对某一个进行,而应充分考虑系统中所有的 SQL,尤其是在通过调整索引优化 SQL的执行计划的时候,千万不能顾此失彼,因小失大。

12.尽可能对每一条运行在数据库中的SQL进行 explain

优化 SQL,需要做到心中有数,知道SQL的执行计划才能判断是否有优化余地,才能判断是否存在执行计划问题。在对数据库中运行的 SQL进行了一段时间的优化之后,很明显的问题 SQL可能已经很少了,大多都需要去发掘,这时候就需要进行大量的 explain操作收集执行计划,并判断是否需要进行优化。

mysql的特点是什么

1)功能强大

MySQL中提供了多种数据库存储引擎,各引擎各有所长,适用于不同的应用场合,用户可以选择最合适的引擎以得到最高性能,可以处理每天访问量超过数亿的高强度的搜索 Web站点。MySQL5支持事务、视图、存储过程、触发器等。

2)支持跨平台

MySQL支持至少 20种以上的开发平台,包括 Linux、Windows、FreeBSD、IBMAIX、AIX、FreeBSD等。这使得在任何平台下编写的程序都可以进行移植,而不需要对程序做任何的修改。

3)运行速度快

高速是 MySQL的显著特性。在 MySQL中,使用了极快的 B树磁盘表(MyISAM)和索引压缩;通过使用优化的单扫描多连接,能够极快地实现连接;SQL函数使用高度优化的类库实现,运行速度极快。

4)支持面向对象

PHP支持混合编程方式。编程方式可分为纯粹面向对象、纯粹面向过程、面句对象与面向过程混合 3种方式。

5)安全性高

灵活和安全的权限与密码系统,允许基本主机的验证。连接到服务器时,所有的密码传输均采用加密形式,从而保证了密码的安全。

6)成本低

MySQL数据库是一种完全免费的产品,用户可以直接通过网络下载。

7)支持各种开发语言

MySQL为各种流行的程序设计语言提供支持,为它们提供了很多的 API函数,包括 PHP、ASP.NET、Java、Eiffel、Python、Ruby、Tcl、C、C++、Perl语言等。

8)数据库存储容量大

MySQL数据库的最大有效表尺寸通常是由操作系统对文件大小的限制决定的,而不是由 MySQL内部限制决定的。InnoDB存储引擎将 InnoDB表保存在一个表空间内,该表空间可由数个文件创建,表空间的最大容量为 64TB,可以轻松处理拥有上千万条记录的大型数据库。

9)支持强大的内置函数

PHP中提供了大量内置函数,几乎涵盖了 Web应用开发中的所有功能。它内置了数据库连接、文件上传等功能,MySQL支持大量的扩展库,如 MySQLi等,可以为快速开发 Web应用提供便利。

mysql数据库如何优化,优化了哪些功能

mysql的优化大的有两方面:

1、配置优化

配置的优化其实包含两个方面的:操作系统内核的优化和mysql配置文件的优化

1)系统内核的优化对专用的mysql服务器来说,无非是内存实用、连接数、超时处理、TCP处理等方面的优化,根据自己的硬件配置来进行优化,这里不多讲;

2)mysql配置的优化,一般来说包含:IO处理的常用参数、最大连接数设置、缓存使用参数的设置、慢日志的参数的设置、innodb相关参数的设置等,如果有主从关系在设置主从同步的相关参数即可,网上的相关配置文件很多,大同小异,常用的设置大多修改这些差不多就够用了。

2、sql语句的优化

1、尽量稍作计算

Mysql的作用是用来存取数据的,不是做计算的,做计算的话可以用其他方法去实现,mysql做计算是很耗资源的。

2.尽量少 join

MySQL的优势在于简单,但这在某些方面其实也是其劣势。MySQL优化器效率高,但是由于其统计信息的量有限,优化器工作过程出现偏差的可能性也就更多。对于复杂的多表 Join,一方面由于其优化器受限,再者在 Join这方面所下的功夫还不够,所以性能表现离 Oracle等关系型数据库前辈还是有一定距离。但如果是简单的单表查询,这一差距就会极小甚至在有些场景下要优于这些数据库前辈。

3.尽量少排序

排序操作会消耗较多的 CPU资源,所以减少排序可以在缓存命中率高等 IO能力足够的场景下会较大影响 SQL的响应时间。

对于MySQL来说,减少排序有多种办法,比如:

通过利用索引来排序的方式进行优化

减少参与排序的记录条数

非必要不对数据进行排序

好了,文章到这里就结束啦,如果本次分享的mysql数据库配置优化和mysql 优化包括哪些内容问题对您有所帮助,还望关注下本站哦!

oracle新建数据库?oracle中如何新建一个数据库重启linux服务器命令 linux重启命令