24、mysql数据库优化
24.1、如何判断网站慢的排查顺序:
客户端->web->nfs->数据库;
24.2、uptime命令详解:
[root@backup ~]#uptime
13:03:23 up 37 min, 1 user, load average: 0.08, 0.02, 0.01
13:03:23 up 37 min #开机时间和开机运行了多长时间;
1 user #正在使用的用户数;
load average: 0.08, 0.02, 0.01
#这里是1分钟、5分钟和15分钟内的平均负载;
#一般load average的三个值不能大于cpu个数,假设长期大于cpu个数说明系统非常繁忙负载高。
#偶尔大于的话,一般不影响实际性能。
24.3、mysql服务器负载高的解决办法:
1、案例一(索引问题):
(1)登录到数据库;
(2)使用show full processlist;命令,发现大量的sql查询查询进程等待;
(3)使用explain+sql语句查看等待的sql语句的索引利用情况;发现该sql语句没有没有走任何的索引,是全表扫描;
(4)查看被查询表的表结构信息,然后使用select count( discount,<字段名称>) from <表名称>;命令查看被查询字
段的的唯一性,发现每一个字段的唯一性都很小,所以通过create index <索引名称> on student (<字段名>,<字段名>);命令
建立联合索引;
(5)通过explain+sql语句查看索引情况,发现sql查询走索引了,通过uptime命令查看mysql服务器的负载也降下来了;
(6)注意:在生产环境中,如果访问频繁的大表,创建索引会很耗费时间,也许需要几分钟,所以应该在业务低估时建立索引;
2、案例二(非索引问题):
使用的搜索是%<搜索的内容>%,不走索引;
使用 mysql -uroot -p<密码> -e "show full processlist" | grep -vi sleep命令查看数据库进程;
3、小结:引起负载高的软件原因,要么是sql查询没有走索引,要么是sql语句写的比较烂;
24.4、如何优化数据库:
1、硬件优化:
6*600、sas、15k硬盘、raid10、2颗cpu、16G、单实例mysql服务;
2、软件优化:
3、my.cnf优化:
对于线程buffer不要调的太大,主要和并发有关,系统内存会吃不消的;
4、sql语句的优化:
5、架构上的优化:
24.5、数据库管理规章制度:
1、项目开发制度流程:
2、数据库更新流程:
3、dba参与项目数据库的设计:
4、各种操作申请流程:
5、定期对内部人员进行培训:
6、内部开发等人员权限的分配:
说明:说到底就是把最大的权限放到dba手中,其他人权限分配最小,如果需要权限就需要走流程;
7、数据库客户端访问控制:
8、数据库运维管理核心思想:
最新文章
- Mouse.OverrideCursor
- hdu 1003 Max sum(简单DP)
- cowboy-高性能简洁的erlang版web框架
- jsp弹出Please check the location and try again!对话框
- (easy)LeetCode 263.Ugly Number
- Android(java)学习笔记91:泛型接口的概述和使用
- USACO Section 1.4 Arithmetic Progressions 解题报告
- 中文代码示例之NW.js桌面应用开发初体验
- Git把Tag推送到远程仓库
- 数据的双向绑定 Angular JS之开端篇
- activiti 工作流 动态 设置 指定 节点任务人、责任人、组 的实现方式
- vue路由守卫应用,监听是否登录
- js如何简单实现汉字转成拼音的功能
- 平台升级至spring 4.3.0 运行稳定
- 编辑距离算法(Levenshtein)
- layui登录后token问题
- Apache多站点配置教程
- hdu 6053 TrickGCD(筛法+容斥)
- F题 hdu 1431 素数回文
- 【Linux设备驱动程序】Chapter 1 - 概述