作家
登录

MySQL开发实践8问,你能hold住几个?

作者: 来源: 2017-09-08 15:41:56 阅读 我要评论

比来研发的项目对DB依附比较重,梳理了这段时光应用MySQL碰到的8个比较具有代表性的问题,谜底也比较偏本身的开辟实践,没有DBA专业和深刻,有进出的请使劲拍砖!…

  1. MySQL读写机能是若干,有哪些机能相干的设备参数?
  2. MySQL负载高时,若何找到是由哪些SQL引起的?
  3. 若何针对具体的SQL做优化?
  4. SQL层面已难以优化,请求量持续增大年夜时的应对策略?
  5. MySQL若何做主大年夜数据同步?
  6. 若何防止DB误操作和做好容灾?
  7. 钙揭捉?择MySQL哪种存储引擎,Innodb具有什么特点?
  8. MySQL内部构造有哪些层次?

1.MySQL读写机能是若干,有哪些机能相干的重要参数?

这里做了几个简单压测实验

机械:8核CPU,8G内存

表构造(尽量模仿营业):12个字段(1个bigint(20)为自增primary key,5个int(11),5个varchar(512),1个timestamp),InnoDB存储引擎。

MySQLdump -u 用户名 -p 数据库名 [表名] > 导出的文件名

实验1(写):insert => 6000/s

分析:CPU跑了50%,这时磁盘为次序写,故机能较高

前提:连接数100,10w笔记录,每次update单笔记录的4个字段(2个int(11),2个varchar(512))

分析:CPU跑2%,瓶颈明显在IO的随机写

slow_query_log_file:慢萌芽日记存放路径

实验3(读):select(where前提射中索引) => 5000/s

前提:连接数100,10w笔记录,每次select单笔记录的4个字段(2个int(11),2个varchar(512))

实验4(读):select(where前提没射中索引) => 60/s

前提:连接数100,10w笔记录,每次select单笔记录的4个字段(2个int(11),2个varchar(512))

几个重要的设备参数,可根据实际的机械和营业特点调剂

max_connecttions:最大年夜连接数

table_cache:缓存打开表的数量

key_buffer_size:索引缓存大年夜小

5.MySQL若何做主大年夜数据同步?

query_cache_size:萌芽缓存大年夜小

sort_buffer_size:排序缓存大年夜小(会将排序完的数据缓存起来)

  MySQL5.5之后及CDB的默认引擎。

  • 支撑行锁:并发机能好
  • 支撑事务:故InnoDB称为事务性存储引擎,支撑ACID,供给了具有提交、回滚和崩溃恢复才能的事务安然
  • 支撑外键:当前独一支撑外键的引擎

read_buffer_size:次序读缓存大年夜小

read_rnd_buffer_size:某种特定次序读缓存大年夜小(如order by子句的萌芽)

应用show engines可查看当前MySQL支撑的存储引擎详情

PS:查看设备办法:show variables like '%max_connecttions%';

2.MySQL负载高时,若何找到是由哪些SQL引起的?

办法:慢萌芽日记分析(MySQLdumpslow)

慢萌芽日记例子,可看到每个慢萌芽SQL低砟瓯:

  1. User@Host: edu_online[edu_online] @ [10.139.10.167] 
  2.  
  3. # Query_time: 1.958000 Lock_time: 0.000021 Rows_sent: 254786 Rows_examined: 254786 
  4.  
  5. SET timestamp=1410883292; 
  6.  
  7. select * from t_online_group_records;  

应用MySQLdumpslow进行慢萌芽日记分析

营业侧应做到的几点:

日记显示该萌芽用了1.958秒,返回254786行记录,一共遍历了254786行记录。及具体的时光戳和SQL语句。

MySQLdumpslow -s t -t 5 slow_log_20140819.txt

输出萌芽耗时最多的Top5条SQL语句

-s:排序办法,t表示按时光 (此外,c为按次数,r为按返回记录数等)

-t:去Top若干条,-t 5表示取前5条

履行完分析结不雅如下:

  1. Count: 1076100 Time=0.09s (99065s) Lock=0.00s (76s) Rows=408.9 (440058825), edu_online[edu_online]@28hosts 
  2.  
  3. select * from t_online_group_records where UNIX_TIMESTAMP(gre_updatetime) > N 
  4.  
  5. Count: 1076099 Time=0.05s (52340s) Lock=0.00s (91s) Rows=62.6 (67324907), edu_online[edu_online]@28hosts 
  6.  
  7. select * from t_online_course where UNIX_TIMESTAMP(c_updatetime) > N 
  8.  
     1/6    1 2 3 4 5 6 下一页 尾页

      推荐阅读

      更好的指标、更好的云优先策略

    对于具有大年夜型复杂IT情况的CIO来说,云优先策略的风险和收益是一个难题。专家建议要应用明显的指标。TCE Strategy首席履行官、技巧和收集安然策略师Bryce Austin表示:“在这种情>>>详细阅读


    本文标题:MySQL开发实践8问,你能hold住几个?

    地址:http://www.17bianji.com/lsqh/37266.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)