导图社区 Mysql
这是一篇关于Mysql的思维导图,MySQL 是最流行的关系型数据库管理系统,在 WEB 应用方面 MySQL 是最好的 RDBMS(Relational Database Management System:关系数据库管理系统)应用软件之一。
这是一篇关于JVM的思维导图,JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的
这是一篇关于Mybatis的思维导图,Java开发中常用SSM(Spring,SpringMVC,Mybatis)组合中的Mybatis框架的使用要点
社区模板帮助中心,点此进入>>
安全教育的重要性
个人日常活动安排思维导图
西游记主要人物性格分析
17种头脑风暴法
如何令自己更快乐
头脑风暴法四个原则
思维导图
第二职业规划书
记一篇有颜又有料的笔记-by babe
伯赞学习技巧
Mysql
存储引擎
InnerDB
行级锁
Record lock:单个行记录上的锁
Gap lock:间隙锁,锁定一个范围,不包括记录本身
Next-key lock:record+gap 锁定一个范围,包含记录本身
支持事务
READ-UNCOMMITTED(读取未提交)
READ-COMMITTED(读取已提交)
REPEATABLE-READ(可重复读)【默认】
SERIALIZABLE(可串行化)
支持外键
MVCC
索引->B+Tree:data域存放数据
MyISAM
表级锁
不支持事务
不支持外键
索引->B+Tree:data域存放数据地址
memory
内存表
archive
流水数据存储引擎
Sql语句执行过程
server层
连接器
查询缓存
分析器
词法分析
语法分析
优化器
执行器
校验权限
执行返回结果
redo log
prepare
commit
binlog
执行慢优化
偶尔
数据库在刷新胀页,例如redo log 写满需要同步磁盘
遇到锁
show processlist查看当前锁状态
经常
没有用上索引
字段类型不对
子查询结果在临时表不使用索引
运算,函数操作不使用索引
索引避免使用大字段,因为inndb索引存储是数据本身
数据库选错索引
采样获取索引数据基数
基数越大,索引有效的可能性越高
约定
【强制】页面搜索严禁左模糊或者全模糊,如果需要请走搜索引擎来解决。
【强制】不得使用外键与级联,一切外键概念必须在应用层解决。
大表优化
限定数据范围
读写分离
垂直分区
按照业务维度拆分
简化表结构
减少IO
数据冗余
引起JOIN
水平分区
按照行拆分,时间拆分
客户端代理
当当网的Sharding-JDBC
阿里的TDDL
中间件代理
Mycat
分库分表后的主键
利用 redis 生成 id
UUID
不同步长的数据库自增 id
Twitter的snowflake算法
美团的Leaf分布式ID生成系统
系统命令
服务管理
状态查询:service mysqld status
启动服务:service mysqld start
停止服务:service mysqld stop
端口查询:netstat -antulp | grep mysqld
登录:mysql -h hostname -u username -ppassword
控制台
获取帮助:help(\?)
选择数据库:use(\u)
执行sql文件:source(\.)
清除当前输入:clear(\c)
元数据查询
服务器版本:SELECT VERSION();
数据库名称:SELECT DATABASE();/SHOW DATABASE
用户名:SELECT USER();
服务器配置变量:SHOW VARIABLES();
服务器状态:SHOW STATUS;
配置文件
/etc/my.cnf
根目录:basedir
数据文件目录:datadir
指定客户端与服务端通信套接字:socket
默认字符集:character-set-server
日志
总结慢查询日志:mysqldumpshow
运行线程:show processlist
备份还原
mysqldump -p -uroot database
mysqladmin -p -uroot create database
mysql -p -uroot <database.sql