Mysql数据库工作中使用以及性能优化

数据库大纲

1.1 为什么要优化

  • 系统的吞吐量瓶颈往往出现在数据库的访问速度上
  • 随着应用程序的运行,数据库的中的数据会越来越多,处理时间会相应变慢
  • 数据是存放在磁盘上的,读写速度无法和内存相比

1.2 数据库结构优化

  • 设计数据库时:数据库表、字段的设计,存储引擎
  • 利用好MySQL自身提供的功能,如索引等
  • 横向扩展:MySQL集群、负载均衡、读写分离
  • SQL语句的优化

1.3 MySQL数据库cpu飙升到500%的话他怎么处理呢?

使用mysql命令:  show processlist;
看看里面跑的 session 情况,是不是有消耗资源的 sql 在运行。找出消耗高的 sql,看看执行计划是否准确, index 是否缺失,或者实在是数据量太大造成。
一般来说,肯定要 kill 掉这些线程(同时观察 cpu 使用率是否下降),等进行相应的调整(比如说加索引、改 sql、改内存参数)之后,再重新跑这些 SQL。
也有可能是每个 sql 消耗资源并不多,但是突然之间,有大量的 session 连进来导致 cpu 飙升,这种情况就需要跟应用一起来分析为何连接数会激增,再做出相应的调整,比如说限制连接数等

1.4大表怎么优化?某个表有近千万数据,CRUD比较慢,如何优化?分库分表了是怎么做的?分表分库了有什么问题?有用到中间件么?他们的原理知道么?

大表的优化思路:

  • 优化sql和表索引
  • 添加缓存 redis,mencache
  • 对数据库做主从复制,主从分离(mycat 主库写,从库读)
    某个表有近千万数据,CRUD比较慢,如何优化:

1.4.1垂直分表
适用场景
缺点
1.4.2 水平分表:
适用场景
水平切分的缺点
1.5 MySQL的复制原理以及流程
1.6读写分离有哪些解决方案?
1.7 备份计划,mysqldump以及xtranbackup的实现原理
1.8 数据表损坏的修复方式有哪些?

参考博客: https://zhuanlan.zhihu.com/p/106061137
参考博客: https://blog.csdn.net/lxw1844912514/article/details/105298019
二 Redis
1.Redis的应用场景
2.redis的集群方案

Mysql数据库工作中使用以及性能优化

上一篇:sql FIND_IN_SET函数


下一篇:在Ubuntu 14.04上安装MariaDB