对mysql优化时一个综合性的技术,主要包括
a: 表的设计合理化(符合3NF)
b: 添加适当索引(index) [四种: 普通索引、主键索引、唯一索引unique、全文索引]
c: 分表技术(水平分割、垂直分割)
d: 读写[写: update/delete/add]分离
e: 存储过程 [模块化编程,可以提高速度]
f: 对mysql配置优化 [配置最大并发数my.ini, 调整缓存大小 ]
g: mysql服务器硬件升级
h: 定时的去清除不需要的数据,定时进行碎片整理(MyISAM) 

——————————————————————————————

1.数据库设计

1NF
2NF
3NF
适当的反范式

———————————————————————————————

2.sql 优化

3.数据库参数配置

1.1 key_buffer_size

1.2 table_cache (包含 .frm文件解析结果) // table_definition_cache,table_open_cache 关联值, Opened_tables 关联状态

1.3 innodb_buffer_pool_size (服务器内存的 75%~80%)

1.4 innodb_flush_log_at_trx_commit // 0, 把日志缓存写到日志文件,1s 刷新一次, 1 事务提交时刷新(默认,最安全), 2 每次提交时把日志缓存写到日志文件

1.5 innodb_additional_mem_pool_size

1.6 innodb_lock_wait_timeout

1.7 innodb_support_xa

1.8 innodb_log_buffer_size // 日志缓冲区大小

1.9 innodb_log_file_size // innodb_log_files_in_group 关联值,事务日志大小

1.10 thread_cache_size // 缓存的线程数,根据 Threads_connected 状态设置

1.11 query_cache_size // 查询缓存

1.12 read_buffer_size

1.13 read_rnd_buffer_size

1.14 sort_buffer_size

1.16 myisam_sort_buffer_size

1.17 innodb_flush_method //innodb 如何跟文件系统交互,可能的值,fdatasync,O_DIRECT, ALL_O_DIRECT, O_DSYNC

1.18 innodb_data_home_dir

1.19 innodb_data_file_path //ibdata1:12M;ibdata2:12M;ibdata3:12M(3个文件创建了12*3的表空

填满第一个再到第二个) 或 ibdata1:12M:autoextend:max:2G(设置表空间自动增长,自动扩展的文件最多到2G,一旦扩展就不能回收)

1.20 innodb_file_per_table //每张表使用一个文件, 表名.ibd

1.21 sync_binlog //控制MySQL 怎么刷新二进制日志到磁盘,默认为0.如果大于0,表示二次刷新到磁盘中间间隔了多少次二进制日志写操作

1.22 delay_key_write // 延迟索引写入(myisam)

1.23 myisam_recover_options //myisam怎么寻找和修复错误

1.24 innodb_thread_concurrency // 限制一次性可以有多少个线程进入内核,0不限制,  并发值=cpu数量*磁盘数量*2

1.25 innodb_thread_sleep_delay

1.26 innodb_concurrency_tickets

1.27 concurrent_insert // myisam 并发插入

1.28 max_length_for_sort_data

1.29 tmp_table_size, max_heap_table_size //这2个设置控制Memory引擎的内存临时表能使用多大的内存。
如果实际内存临时表的大小超过这2个设置的值,就会被转为磁盘MyISAM表,所以它的大小可以继续增长.

应该简单的把这2个值设置为同样的值.

1.30 max_connections //保证服务器不会被应用激增的连接而不堪重负,会被 "太多的连接" 的错误.

观察 Max_used_connections 状态, 如果超过 max_connections,则说明至少拒绝过一次。

1.31 innodb_buffer_pool_instances  //可以把缓冲池分为多段

1.32 innodb_io_capacity

1.33 innodb_read_io_threads  // 控制多少后台线程可以被IO操作使用

1.34 innodb_write_io_threads // 控制多少后台线程可以被IO操作使用

1.35 innodb_strict_mode  // 把某些条件下的警告变成抛错
 
    1.36 innodb_old_blocks_time

1.37 innodb_autoinc_lock_mode  // 这个选项控制InnoDB 如何生成自增主键,高并发下自增主键可能是个瓶颈

MySQL 安全配置:
expire_logs_days //让服务器在指定的天数之后清理旧的二进制日志,7~14天max_allowed_packet //防止服务器发送太大的包, > 16Mmax_connect_errors // 客户端尝试连接失败的次数,可以抵御一些恶意的攻击skip_name_resolve // 禁用 DNS 查找sql_mode // 接收多种多样的值来改变服务器行为sysdate_is_now read_only // 禁止没有特权的用户在备库做变更skip_slave_start // 阻止MySQL试图自动启动复制slave_net_timeout // 这个选项控制备库发现跟主库的连接已经失败并且需要重新连接之前等待的时间sync_master_info, sync_relay_log, sync_relay_log_info //

https://blog.csdn.net/enlyhua/article/details/79706369

https://blog.csdn.net/enlyhua/article/details/78705056

———————————————————————————————

4.适当的硬件资源和操作系统

1.1 使用磁盘阵列

1.2 使用 symbolic link 分布 I/O

1.3 禁止操作系统更新文件的 atime 属性

1.4 裸设备(Raw device)存放 InnoDB 的共享表空间

1.多核CPU
2.顺序IO,随机IO
3.多次写入,一次刷新
4.IO合并
5.固态硬盘(SSD),用 SSD做RAID

https://blog.csdn.net/enlyhua/article/details/79720912

———————————————————————————————

5.应用层面优化

1.1 使用连接池

1.2 减少对 MySQL 的访问

1.3 使用查询缓存

1.4 增加 cache 层

1.5 负载均衡(主从)

1.6 采用分布式数据架构

1.7 对于没有删除操作的 MyISAM 表,可以采用并行插入

1.8 尽量采用默认值

37.MySQL 优化总结相关推荐

  1. MySQL优化学习总结

    MySQL 性能优化的最佳20多条经验分享 http://www.jb51.net/article/24392.htm 今天,数据库的操作越来越成为整个应用的性能瓶颈了,这点对于Web应用尤其明显.关 ...

  2. mysql优化说出九条_技术分享 | MySQL 优化:为什么 SQL 走索引还那么慢?

    原标题:技术分享 | MySQL 优化:为什么 SQL 走索引还那么慢? 背景 2019-01-11 9:00-10:00 一个 MySQL 数据库把 CPU 打满了. 硬件配置:256G 内存,48 ...

  3. MySQL优化 之 Discuz论坛优化

    一. 前言 近日由于需要,对discuz论坛(简称dz)进行优化,当然了,只是涉及到数据库的优化. 先说一下服务器及dz的数据量,2 * Intel(R) Xeon(TM) CPU 2.40GHz, ...

  4. mysql1.7(mysql优化,mysql-mmm软件介绍,mysql高可用集群。)

    一,mysql优化. 1. 1mysql服务工作过程 mysql服务由8个功能组件组成: 1,管理工具  把软件包安装后,提供的命令. #mv /etc/my.cnf   /etc/my.cnf.ba ...

  5. 面试再也不用惧怕MYSQL优化,优化详解

    一位爱好技术的橘右京的哥哥橘左京 MYSQL优化大法 1. SQL优化 1.1 查询SQL执行频率 1.2 定位低效率执行SQL 1.3 explain分析执行计划 1.3.1 explain之ID ...

  6. Mysql优化(高级篇)

    Mysql数据库优化篇 Q: 为什么别人问你MySQL优化的知识 总是没有底气. A: 因为你只是回答一些大而化之的调优原则, 比如:"建立合理索引"(什么样的索引合理?) &qu ...

  7. MySQL优化配置之query_cache_size

    原理 MySQL查询缓存保存查询返回的完整结果.当查询命中该缓存,会立刻返回结果,跳过了解析,优化和执行阶段.  查询缓存会跟踪查询中涉及的每个表,如果这写表发生变化,那么和这个表相关的所有缓存都将失 ...

  8. 小型网站到大型网站-Mysql优化

    2019独角兽企业重金招聘Python工程师标准>>> 背景 好的大型网站都是从小型网站慢慢演变来的,都不是一步就设计好的.现在的淘宝,03年创建的时候它也是只有一台服务器,使用的是 ...

  9. 4 个 MySQL 优化工具 AWR,帮你准确定位数据库瓶颈!

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 来源:今日头条,作者:老王谈运维 www.toutiao.com/ ...

  10. mysql优化 博客园_MySQL优化

    MySQL优化步骤 首先学会如何定位到SQL语句 1.1查看SQL语句的执行次数 在MySQL中可以通过命令查看服务器该表状态信息 show status like 'Com_______'; 如果想 ...

最新文章

  1. c++ 遍历list_数据结构之图的遍历,一篇文章get全部考点
  2. East Central North America Region 2015
  3. 【linux】查看ip
  4. android things 系统镜像文件_开始菜单搬家!Win 10X 系统 UI 全部重做,明年初就能用上...
  5. MVC教程第七篇:闲话ASP.NET
  6. mysql故障切换_MySQL故障切换笔记之应用无感知设计详解
  7. SLAM综述之ORB-SLAM3论文精读: An Accurate Open-Source Library for Visual, Visual-Inertial and Multi-Map SLAM
  8. phpstudy中php页面不识别php代码解决方法
  9. 计算机专业和制药工程,制药工程本科专业介绍
  10. android 图片设置圆角
  11. 慕课网仿去哪儿项目笔记--(一)-初始化准备
  12. Android打造自定义通用popWindow
  13. 有关CCF的CSP认证
  14. 经典的图像分割方法总结
  15. keras 中adam_ADAM中的渲染和着色:第3集
  16. 打印当前页面指定元素中的内容
  17. Vsftpd配置文件解析
  18. 硬件开发设计 - 焊接电路板,介绍焊接概念,焊接步骤,常见错误,难点等
  19. Unity3D找不到UI包的处理方法
  20. 怎么把pdf文件截图

热门文章

  1. Hibernate 缓存机制(转)
  2. spine findBone
  3. 工程师们,不要想一辈子靠技术混饭吃
  4. 脱发、秃头防不胜防?这里有一份给码农的减压指南
  5. 精选|2019年1月R新包推荐
  6. shiny动态仪表盘应用 | 中国世界自然文化遗产可视化案例
  7. 【VScode】使用VScode来写markdown ② 流程图
  8. ExtJS学习之window
  9. Python-老男孩-02_装饰器_面向对象_封装_继承_异常_接口_数据库
  10. [JavaEE] Hibernate连接池配置测试