当前位置:Gxlcms > 数据库问题 > mysql优化

mysql优化

时间:2021-07-01 10:21:17 帮助过:7人阅读

mysql数据库优化



1.硬件优化

  a.64位cpu 一台机器8-16颗cpu,(其他)2-4颗

  b.内存  96-128g 3-4个实例(百度),(其他)32-64,2个实例

  c.硬盘,数量越多越好,性能:ssd(高并发)>sas(普通线  上)>sata(线下)

  raid  4块盘:RAID0>RAID10>RAID5>RAID1

  d.网卡 多块网卡bond,以及buffer,tcp优化


2.软件优化

  操作系统:64位

  软件:mysql 编译优化



3.参数优化(my.cnf)

  my.cnf优化的幅度很小,大部分是架构和sql语句的调优

  innodb_buffer_pool_size=2048m物理内存的30%-50%

  sort_buffer_size=2m 线程buffer,不能给太大

  tmp_table_size=256m 临时表

  long_query_time=2 slow_log,超过两秒的

  skip-name-resolve 不加会遇到权限问题

  思想:

  监控:show global status\G查看命中率

  调优工具:mysqlreport


4.sql语句的优化

  a.索引优化

     抓出慢sql,配置my.cnf(大于2s的,没走索引的记录下来)

     long-slow-query=/data/3306/slow-log.log

     慢查询日志分析工具:mysqldumpslow,mysqlsla,myprofi

     按天轮询:slow-log.log

  b.每天晚上0点定时分析慢查询,发到核心开发,DBA的邮箱

  c.大的复杂的sql语句拆分成多个小的sql语句

    子查询,JOIN链表查询,某个表4000万条记录

  d.数据库是存储数据的地方,但不是计算的地方,拿到前端应用解决

  e.搜索功能,LIKE‘%老男孩%‘一般不要用mysql数据库


5.架构优化

  1.业务拆分

  2.数据库前端加cache,例如:memcache(用户登录,商品查询等等)

  3.某些业务应用使用nosql持久化存储,例如:memcachedb,redis(粉丝,关注,好友关系等等)

  4.动态的数据静态化。整个文件静态化,页面片段静态化

  5.数据库集群与读写分离。一主多从。通过程序或者dbproxy进行集群读写分离

  6.单表超过2000万。拆库拆表

6.流程,制度,安全优化


  任何一次人为数据库记录的更新,都要走一个流程:

   a.人的流程:开发-->核心开发-->运维或DBA(确认)

   b.测试流程:内网测试-->IDC测试-->线上执行

   c.客户端管理,phpmyadmin


本文出自 “linux运维” 博客,转载请与作者联系!

mysql优化

标签:mysql优化

人气教程排行