网站制作学习网→http://www.forasp.cn/→正文:mysql 优化
字体:

mysql 优化

http://www.forasp.cn/ 2023/4/3 21:02:44  点击:不统计

http://%77%77%77%2E%66网站制作%6F学习网%72%61%73%70%2E%63%6E

在做开发过程中经常使用mysql 作为数据库,单一般都是采用默认的配置,那mysql数据库优化都有哪些今天说一说

mysql 数据库优化。大体可以分为四个部分,每个部分再分很多细节。

 

第一部分 mysql 版本的选择

  1. 选择mysql8 还是mysql5.7.x 高版本
    首先说性能,理论上 版本越高,性能越好。但在实际应用中可能要看场景。
    看到网络测试:https://blog.csdn.net/H176Nhx7/article/details/119306075 推荐更高版本的。
  2. 版本选择看场景
    如果是新项目,建议是高版本。如果是老项目,建议是 老版本的高阶版本,通用性更好

 

第二部分 mysql 的参数配置

  1. 首先说本地链接方式 localhost 还是127.0.0.1。如果是远程肯定是ip了

如果是本地连接,在大量的数据测试中还是localhost 连接比较快,性能更高。

  1. mysql 优化之 最大连接数 max_connections 配置

(1) 先看mysql默认配置 默认为151,这个可以在配置文件my.conf [mysqld]中修改,没有则添加

查看默认sql语句

mysql> show variables like 'max_connections';

此值 可以设置为1000 或者更大,要看实际服务器性能,以及下面第二个参数

  1. mysql 优化之 客户端释放连接时间wait_timeout,默认为28800 秒 8小时等待请求,如果没有请求就会释放。

查看mysql 默认数据

mysql> show variables like 'wait_timeout';

这个可以根据实际修改,在my.conf [mysqld]中修改 ,没有则添加

这个值可以更高为更大,比如288000 ,80小时

  1. mysql 优化之 key_buffer_size 关键词缓存,MyIsam建议为 总内存的25%左右。
  2. msyql 优化max_allowed_packet,允许提交数据量大小,比如source  sql文件 ,这个根据需求定义,my.conf在mysqld 中添加
  3. mysql 优化 table_open_cache,可以开的临时表缓存,会与max_connection 相关,当打开过多会消耗connection
  4. mysql 优化 sort_buffer_size 鱼connection 相关,每个connection 连接会使用sort_buffer_size。sort_buffer_size不是越大越好,过大设置可能会消耗尽内存。
    当sort_buffer_size 大于2kB 就要使用malloc 分配内存,导致效率降低。
  5. query_cache_size 网络上说256M合适,或者是内存的1/4 比较合适,主要是sql 执行缓存。越多命中率越高。
    查询缓存命令 show status like ‘%qcache%’;
  6. tmp_table_size 临时表大小,每个线程都会用到。 根据内存设置,建议大小是内存G *4 比如4G内存 则是4*4=16M

 

第三部分 sql优化

  1. 查询不要用*
  2. 尽量减少多个联表查询,如果是多联表,则从小联结大表。
  3. 不要使用like,用其他搜索引擎代替
  4. 检查字段判断不要做空或者null 判断,因为这样不会走索引。
  5. 在查询条件中不要使用运算符号
  6. !=、!<>、not in、not like、or...减少使用,因为使用可能会索引失效
  7. 强制指定索引 比如 select a from table_b force index('索引名称')
  8. 尽量减少 深度分页查询 比如selec a from table limti 10000,10 ;可以通过索引等来代替。
    如果明确查询1条数据,sql 后面添加limit 1
  9. 尽量少使用缩写,比如 as 。 select a as "b" from table

 

 

 第四部分 业务流程优化

  1. 分表,根据业务水平或者垂直分表
  2. 选择存储引擎,如果读的多写的少,建议myisam 如果是更新多这innodb
  3. 优化字段-非空,不设置空或者null 字段
  4. 减少外键,触发器 和试图
  5. 大文件存储,拆分单独表存储,或者不存放到表内。
  6. 配置慢查询,通过慢查询 进行sql优化

forasp.cn

·上一篇:mysql GROUP_CONCAT >>    ·下一篇:sql 中的order by 排序 >>
推荐文章
最新文章