MySQL优化

2024/04/07 MySQL 共 1084 字,约 4 分钟

MySQL优化

1、调优思路

  1. 硬件优化
  2. 数据库设计与规划–以后再修改很麻烦,估计数据量,使用什么存储引擎
  3. 数据的应用–怎样取数据,SQL语句的优化
  4. 磁盘 IO优化
  5. 操作系统的优化–内核、TCP连接数量
  6. MySQL服务优化–内存的使用,磁盘的使用
  7. my.cnf 内参数的优化
  8. 分库分表思路和优劣

MySQL资源分配参考

CPU资源物理机内存分配给系统的内存分配给mysql的内存
系统和mysql共用8G2G6G
系统和mysql共用16G4G12G
系统和mysql共用32G8G24G
系统和mysql共用64G8G56G
系统和mysql共用128G8G120G
系统和mysql共用以此类推以此类推以此类推

1.1 硬件优化

  • CPU—— 64 位、高主频、高缓存,高并行处理能力
  • 内存——大内存、主频高,尽量不要用 SWAP
  • 硬盘——15000转、RAID5、raid10 。 SSD
  • 网络——标配的千兆网卡,10G网卡,bond,team MySQL服务器尽可能和使用它的web服务器在同一局域网内,尽量避免诸如防火墙策略等不必要的开销

1.2 数据库设计与规划(架构上的优化)

纵向拆解: 专机专用

例:现在公司一台服务器同时负责 web、ftp、数据库等多个角色。当web服务器把cpu占满了,mysql服务也没有办法运行了。一个服务坏了,全所有服务全坏。

纵向拆解后就是:数据库服务器专机专用,避免额外的服务可能导致的性能下降和不稳定性。

横向拆解:当单个 MySQL数据库无法满足日益增加的需求时,可以考虑在数据库这个逻辑层面增加多台服务器,以达到稳定、高效的效果。比如:使用主从读写分离、MHA,MGR等技术。

1.3 查询优化

  1. 建表时表结构要合理,每个表不宜过大;在任何情况下均应使用最精确的类型。例如,如果ID列用int是一个好主意,而用text类型则是个蠢办法;TIME列酌情使用DATE或者DATETIME。

  2. 索引,建立合适的索引。

  3. 查询时尽量减少逻辑运算(与运算、或运算、大于小于某值的运算);

  4. 减少不当的查询语句,不要查询应用中不需要的列,比如说select * from 等操作。

  5. 减小事务包的大小;

  6. 将多个小的查询适当合并成一个大的查询,减少每次建立/关闭查询时的开销;

  7. 将某些过于复杂的查询拆解成多个小查询,和上一条恰好相反

  8. 建立和优化存储过程来代替大量的外部程序交互。

1.4 MySQL服务器物理机上磁盘 IO优化

存储mysql数据的磁盘使用raid5、raid10 、SSD固态盘 、15000转SAS盘。

将数据库目录放到一个分区上或一个磁盘上的物理分区。存储数据的硬盘或分区和系统所在的硬盘分开。

1.5 安装mysql并将数据写到独立的磁盘中

文档信息

Search

    Table of Contents