超详细汇总21个值得收藏的mysql优化实践

yizhihongxing

超详细汇总21个值得收藏的MySQL优化实践

在MySQL的使用过程中,优化是非常重要的一个环节。在优化过程中,涉及到的方面包括数据结构、数据库架构、查询语句优化等多个方面。下面将对21个值得收藏的MySQL优化实践进行超详细汇总:

优化架构

1. 数据库服务器的设置

MySQL服务器的设置对于整个数据库的性能有很大的影响。可以进行以下设置优化:
- 修改缓存大小max_allowed_packet和innodb_buffer_pool_size
- 配置wen线程池
- 配置好连接池

2. 数据库扩展方式

  • 采用分布式架构和读写应用分离模式,采用主从同步的方式加快查询速度
  • 对于数据量较大的表可以采用垂直分表进行优化

优化查询语句

3. 尽量使用覆盖索引

即通过索引字段能够查询到所需字段,而无需回表去查询其他字段,可以大幅提高查询速度。

示例:原始查询 SELECT name, age FROM person WHERE name = 'Amy';

优化后查询 SELECT age FROM person WHERE name = 'Amy';

4. 避免使用SELECT *

如果只需要查询部分字段,尽量只查询需要的字段,避免查询无用字段占用额外的IO资源。

5. 避免使用LIKE '%...%'

LIKE '%...%'是MySQL中最常用的模糊匹配方式,但其使用会导致全表扫描,效率极低,尽量使用LIKE '...%'的形式。

示例:原始查询 SELECT name FROM person WHERE name LIKE '%Amy%';

优化后查询 SELECT name FROM person WHERE name LIKE 'Amy%';

优化数据结构

6. 尽量使用小而简单的数据类型

适当减小数据类型的长度,例如使用int型代替bigint,可以优化性能。

7. 尽可能使用枚举而不是字符串类型

枚举类型的存储方式更加紧凑,可以减少存储空间,提高查询速度。

8. 尽量避免使用NULL

数据库中的NULL代表未知值,会增大存储空间,而且会影响查询性能。

9. 优化索引的使用

确保索引列上的数据格式规范。

优化应用程序

10. 最小化需要监视和检查的数据

在应用程序中要最小化不必要的数据监视和检查次数,提高应用程序的性能。

11. 使用批量INSERT和UPDATE

应尽可能使用批量操作。如果每次只更改一条数据,那将会影响性能,采用批量操作可以减少线程数、缩短锁定时间,提高更新效率。

示例:原始操作 INSERT INTO person(name, age) VALUES ('Amy', 20), ('Andy', 22);

优化后操作 INSERT INTO person(name, age) VALUES ('Amy', 20);

INSERT INTO person(name, age) VALUES ('Andy', 22);

12. 缩短锁的持续时间

当一个连接持有一个锁时,其他连接将无法被处理。因此,要尽可能缩小锁持续时间,以便快速的释放锁。

优化服务器

13. 优化内存使用

在MySQL服务器中将可以使用多达20%到30%的内存用于高速缓存,从而提高服务器的性能。

14. 控制并发访问

这是控制MySQL服务器性能的最重要因素之一。

15. 针对应用进行优化

优化MySQL服务器的性能需要不断了解和按照应用进行调整。

优化磁盘使用

16. 优化InnoDB的表空间

InnoDB的表空间(tablespace)是由多个文件(.ibd)组成,应该采用独立的表空间文件进行优化。

17. 使用大容量磁盘

使用大容量磁盘也是非常重要的一个优化手段,硬盘空间越大则可放置的数据越多,充分利用磁盘空间也可以提高服务器性能。

优化数据备份

18. 使用mysqldump

mysqldump是MySQL的一款备份工具,可以通过备份恢复数据,并能够产生数据和数据结构还原的SQL语句。

19. 采用磁盘镜像备份

磁盘镜像备份会从使用生产服务器的磁盘副本中恢复数据,速度非常快,不需要手动调整,且存储空间有效。

优化锁相关

20. 使用事务

MySQL事务可以确保在操作期间不会发生其他操作。在确保一致性和隔离性的同时,可以提高处理速度。

21. 避免锁冲突

锁冲突是一个非常严重的问题,如果多个请求同时尝试对相同资源进行操作,那么将会导致频繁的锁冲突,由此导致CPU的使用率升高,根据实际情况采取适当措施。

以上就是MySQL优化的21个技巧,针对每种技巧应用场景不同,可以根据实际需要进行优化调整。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:超详细汇总21个值得收藏的mysql优化实践 - Python技术站

(0)
上一篇 2023年5月19日
下一篇 2023年5月19日

相关文章

  • PHP5.6版本在Windows上安装redis扩展

    PHP使用redis扩展   一.php安装redis扩展   1.使用phpinfo()函数查看PHP的版本信息,这会决定扩展文件版本       2.根据PHP版本号,编译器版本号和CPU架构, 选择php_redis-2.2.5-5.6-ts-vc11-x64.zip和php_igbinary-1.2.1-5.5-ts-vc11-x64.zip 下载地…

    Redis 2023年4月12日
    00
  • php扩展redis链接失败,返回false

    刚开始接触redis,发现一直返回false,其实只要关闭防火墙就可以连接成功了。 关闭selinux操作   方法1:修改grub.conf将参数selinux=1修改为等于selinux=0,这个将比较测彻底的关闭它。   方法2:修改selinux配置文件/etc/selinux/config中的SELINUX参数修改为SELINUX=disabled…

    Redis 2023年4月11日
    00
  • 中国省市区数据mysql脚本

    2.查市 3.查区 4.Mysql脚本 /* Navicat MySQL Data Transfer Source Server : MySQL Source Server Version : 50022 Source Host : 127.0.0.1:3306 Source Database : xlj Target Server Type : MYSQL…

    MySQL 2023年4月13日
    00
  • Navicat Premium操作MySQL数据库(执行sql语句)

    下面是关于Navicat Premium操作MySQL数据库执行SQL语句的完整攻略: 1. 安装Navicat Premium 首先,需要在官网下载Navicat Premium的安装包,然后进行安装。安装完成后,打开Navicat Premium,就能看到连接数据库的主界面。 2. 连接MySQL数据库 点击“连接”按钮,并选择数据库类型为MySQL。填…

    database 2023年5月21日
    00
  • redis.clients.jedis.exceptions.JedisConnectionException: Could not get a resource from the pool at redis.clients.util.Pool.getResource(Pool.java:53)

    解决方法1: 主要就是要去redis的配置文件中修改密码,修改完密码后记得重启redis。跟着作者的步骤走,可以完美解决! 解决方法2: 在配置文件中把password去除一样可以解决! 1.把redis配置文件中的password注释了 2.把spring-redis中的passwrod配置也注释了   参考:https://blog.csdn.net/i…

    Redis 2023年4月12日
    00
  • MySQL数据库配置优化的方案

    MySQL数据库配置优化是保证数据库性能和稳定性的重要举措,通常包含以下方面: 硬件配置 硬件配置是保证数据库能够提供稳定运行的基础,符合实际业务的需求,应该考虑以下几个方面: CPU:MySQL的计算密集型操作,如聚合函数、排序和连接等,需要足够的CPU资源支持,建议选用多核CPU; 内存:内存越大,数据库缓存的数据和索引就越多,性能也就越高,因此建议将内…

    database 2023年5月19日
    00
  • Python连接mysql数据库的正确姿势

    对于连接 MySQL 数据库,我们可以采用 Python 提供的三种方式:Python DB-API、MySQLdb、PyMySQL。 下面是详细步骤: 安装 MySQL 首选需要在本地电脑上安装 MySQL 数据库,建议在官网下载挺好 https://dev.mysql.com/downloads/mysql/。 安装 Python MySQL 驱动 Py…

    database 2023年5月22日
    00
  • Firebase和Derby的区别

    Firebase和Derby都是面向实时多人协作的应用程序开发平台,但它们具有不同的功能和特点。下面将分别详细讲解Firebase和Derby的区别: Firebase Firebase是一种面向实时多人协作的应用程序开发平台,它可以提供实时数据同步和授权用户身份验证等功能。Firebase可以迅速开发应用程序,并且不需要自己搭建服务器。 实时数据库 Fir…

    database 2023年3月27日
    00
合作推广
合作推广
分享本页
返回顶部