MY SQL 知识
LINUX配置优化
- 诊断命令
- 硬件优化
- raid 10
- ssd
- Fusion-io
- 大内存
- 电池后备SCSI磁盘缓存
- 系统优化
- 日志,数据分盘
- IO调度算法 deadline适用于磁盘 noop适用于ssd
- XFS文件系统
- 避免使用swap 分区
- fd限制 ulimit
MySQL参数配置
- 基础配置
- 字符集
- 数据目录,日志目录,临时目录
- sql_mode
- 缓存设置
- 线程缓存
- 表缓存
- 排序缓存
- join缓存
- 查询缓存
- binlog缓存
- ......
- 阈值设置
- max connection
- timeout
- slow query time
- ......
- innodb 设置
- instances
- size
- io_capacity
- innodb_flush_method=O_DIRECT 数据直接写盘,避过OS cache 日志还是OS flush
- 双一设置
- ......
MySQL开发规范
- DDL
- 类型使用要精确
- not null
- 避免text/blob
- 避免外键
- 自增主键
- 避免冗余索引
- 索引数量控制
- 索引字段过滤度
- DML
- 避免使用触发器,存储过程
- 存储使用Mysql,不要有运算逻辑
- 更新操作禁用limit
- select * 禁用
- in 优先 or
- 同表alter操作合并
BIG SQL
- 索引优化
- WHERE 条件索引使用率,符合最左原则
- 联合索引,注意索引过滤度
- 表join操作,注意加索引,且join字段类型必须一致
- SQL优化
- 子查询变成连接操作,优先使用独立子查询
- 利用覆盖索引,分页操作
- 拆分SQL,加缓存表或者汇总表
- 外在条件下推,减少中间结果集
- 重写SQL,利用过滤性更好的索引
主从延迟
- 避免
- 避免3B
- 较少从库压力,包括服务器和数据库本身的
- 从库上有触发操作,控制更新量
- 改善
- 升级从库机器硬件ssd
- 升级数据库版本,5.6的库并发 5.7的binlog线程并发
- 第三方工具,丁奇的transfer插件
- inset...select rbr模式,可以先select 缓存结果,后insert
排查方法
- 服务器
- top
- 查看负载
- 查看CPU耗时
- iostat
- free
- ps aux | grep pid
- 查看具体进程信息
- top
- MySQL
- SHOW FULL PROCESSLIST / dbaslowing
- 数据库目前运行SQL,连接数
- 慢查询实时采集,格式话输出
- SHOW ENGINE INNODB STATUS
- 运行事务信息
- 死锁信息 / pt-deadlock-logger 周期采集死锁信息
- buffer pool 信息查看
- dbaprocess.sh
- 查看连接数排序,显示连接服务
- SHOW FULL PROCESSLIST / dbaslowing
紧急恢复
- 切换
- 主从切换
- 双主模式,设置自增间隔,不停服
- read_only 切换,保留静态老主
- 主从切换
- 连接数打满
- pt-kill
- mysqladmin kill
日常指标
- zabbix
- 历史状态查询
- 报警监控
- 组合定制脚本监控
- 运维脚本
- 慢查询脚本每日邮件
- 数据库周健康度邮件
- 核心表每日备份
- 扩容从库脚本
- 搭建级联脚本
- 测试库同步脚本
- 试运行环境对比脚本
- 备份
- hotbak,dump
- nfs挂载磁盘
- hdfs数据冗余
自动化运维
- 自动审核inception
- 自动授权系统
MySQL HA
中间件
- dbproxy
- 读写分离
- 从库HA,负载均衡
- mycat
- 读写分离
- 从库负载均衡
- 分库分表&全局表
- HA
- 不支持分布式事务
- 业务SQL限制,需要有路由key
- 性能有所损耗
- dbproxy
MHA
- PXC
常用PT
- pt-config 数据库替换时,验证参数一致性
- pt-deadlock-logger 记录历史死锁信息
- pt-duplicate-key-checker 冗余索引检测
- pt-ioprofile IO调试
- pt-kill 定制kill连接线程
- pt-online-schema-change OSC
- pt-query-digest 状态输出慢查询
- pt-table-checksum 主从一致性验证
- pt-slave-find 主从拓扑结构
- pt-fifo-split 大文件导入
MY SQL 知识的更多相关文章
- Atitit 补充说明 sql知识图谱与线路图attilax总结补充说明
Atitit 补充说明 sql知识图谱与线路图attilax总结补充说明 1. 常见编程语言的分类 :命令式语言.函数式语言.逻辑语言1 1.1. 按照编程语言的代际划分,又2gl,3gl,4gl ...
- TFS二次开发、C#知识点、SQL知识总结目录
TFS二次开发系列 TFS二次开发系列:一.TFS体系结构和概念 TFS二次开发系列:二.TFS的安装 TFS二次开发系列:三.TFS二次开发的第一个实例 TFS二次开发系列:四.TFS二次开发Wor ...
- 学习之路三十六:SQL知识总结 - [游标||字符串分割]
好久没有写文章了,今天把前不久项目用到的SQL知识总结一下. 一丶字符串分割 SQL内置函数中是没有Split分割函数的,所以需要自己去实现,不多说,上代码: )) RETURNS @result T ...
- TFS二次开发、C#知识点、SQL知识
TFS二次开发.C#知识点.SQL知识总结目录 TFS二次开发系列 TFS二次开发系列:一.TFS体系结构和概念 TFS二次开发系列:二.TFS的安装 TFS二次开发系列:三.TFS二次开发的第一 ...
- 测试人员需要了解的sql知识(提高篇)
上一篇写了一些基础的sql知识,这里再深挖一些常用的 ------------------------------------------------------------------骄傲的分割线- ...
- mysql sql知识总结
SQL知识总结: 检索不同的行: SELECT DISTINCT VEND_ID FROM PRODUCTS; DISTINCT 应用于所有的列 =================== 限制结果: S ...
- SQL知识整理一:触发器、存储过程、表变量、临时表
触发器 触发器的基础知识 create trigger tr_name on table/view {for | after | instead of } [update][,][insert][,] ...
- sql知识
SQL 基本知识 SQL Server 是Microsoft 公司推出的关系型数据库管理系统.具有使用方便可伸缩性好与相关软件集成程度高等优点,可跨越从运行Microsoft Windows 98 的 ...
- SQL知识三(Day 27)
大家好,好几天都没写博客了.因为自己的一些原因,落下了很多.今天没有学什么新的知识,自己就把以前落下的好好看了一下.好了,今天就先总结一下SQL剩下的一些知识吧. 主要学的知识有:循环语句(case语 ...
- SQL知识目录
SQL理论知识 -------理论知识总结 -------理论知识总结 -------理论知识总结 -------理论知识总结 -------理论知识总结 -------理论知识总结 -------理 ...
随机推荐
- QPainter类的一些问题
QPainter painter1(this);//新建类 painter1.setRenderHint(QPainter::Antialiasing,true);//设置反锯齿 painter1.s ...
- jenkins入门
look at http://www.cnblogs.com/itech/archive/2011/11/23/2260009.html
- XSS的原理分析与解剖(转)
(转)http://netsecurity.51cto.com/art/201408/448305_all.htm 0×01 前言: <xss攻击手法>一开始在互联网上资料并不多(都是现成 ...
- linux中用户、组的管理(密码管理、权限管理及其修改用户、组)(转)
process(进程) 1 计算资源 权限 用户(获取资源或服务的凭证或标识) 用户,容器,关联权限:用户组(标识符),方便地指派权限 2 用户.组.权限 安全上下文(secure context ...
- python 面向对象-笔记
1.如何创建类 class 类名: pass class bar: pass 2.创建方法 构造方法,__init__(self,arg) obj = 类('a1') 普通方法 obj = 类(‘xx ...
- (转载)持续集成(第二版)[来自:Martin Fowler]
转载自:iTech的博客 持续集成(第二版) 作者:Martin Fowler 译者:雷镇 持续集成 是一种软件开发实践.在持续集成中,团队成员频繁集成他们的工作成果,一般每人每天至少集成一次,也可以 ...
- 半小时快速了解redis,基于ubuntu 12.04 + redis 2.8.9
一.什么是redis ? 其官方介绍是: Redis is what is called a key-value store, often referred to as a NoSQL databas ...
- NTDLL未文档化函数RtlGetNtVersionNumbers获取操作系统版本
作为新手,对获取操作系统版本号好奇过,因为曾经假象过一个场景:自己的程序在windows xp环境下编译,在windows 2003, windows 7,windows 8是否需要提权或者兼容处理, ...
- 关于for循环删除数组内容出现的问题
昨天用for循环进行数组去重的时候出现的问题, 首先,用双重for循环把前一个和所有后面的元素进行比较,如果相等则删除. 但是,如果数组里面有三个以上连续相等的元素的时候,就会出现问题. var ar ...
- export LD_LIBRARY_PATH=/opt/gtk/lib:$LD_LIBRARY_PATH
如题,临时修改程序运行时动态库的搜索路径,平时经常会用到,记录之!