置顶
多源复制架构
2 8 2019
(1) 清理环境
(2) 创建需要的目录 
(3) 准备配置文件
(4) 初始化数据 
(5) 启动数据库
(6) 构建主从......
置顶
Percona-toolkit工具详解
1 8 2019
pt-osc工作流程:
1、检查更改表是否有主键或唯一索引,是否有触发器
2、检查修改表的表结构,创建一个临时表,在新表上执行ALTER TABLE语句
3、在源表上创建三个触发器分别对于INSERT UPDATE DELETE操作
4、从源表拷贝数据到临时表,在拷贝过程中,对源表的更新操作会写入到新建表中
5、将临时表和源表rename(需要元数据修改锁,需要短时间锁表)
6、删除源表和触发器,完成表结构的修改。......
mysql 幻读的理解、实例及解决办法
3 8 2019
幻读,并不是说两次读取获取的结果集不同,幻读侧重的方面是某一次的 select 操作得到的结果所表征的数据状态无法支撑后续的业务操作。更为具体一些:select 某记录是否存在,不存在,准备插入此记录,但执行 insert 时发现此记录已存在,无法插入,此时就发生了幻读。......
MySQL事务
3 8 2019
start transaction;
……  #一条或多条sql语句
commit;......
MySQL存储过程/存储过程与自定义函数的区别
4 8 2018
存储过程实现的过程要复杂一些,而函数的针对性较强;
存储过程可以有多个返回值,而自定义函数只有一个返回值;
存储过程一般独立的来执行,而函数往往是作为其他SQL语句的一部分来使用;......
事务的隔离级别,mysql中开启事务、django中开启事务
5 6 2018
RU:READ-UNCOMMITTED  读未提交  会出现问题: 脏读、不可重复读、幻读
RC:READ-COMMITTED  读已提交  会出现问题:不可重复读、幻读
RR:REPETABLE-READ  可重复读  会出现问题:幻读,但是可以通过GAP和Next-lock防止幻读。
SE:SERIALIZABLE  可串行化 效率慢
默认:可重复读......
索引及执行计划
3 8 2019
(1). 索引是基于表中,列(索引键)的值生成的B树结构
(2). 首先提取此列所有的值,进行自动排序
(3). 将排好序的值,均匀的分布到索引树的叶子节点中(16K)
(4). 然后生成此索引键值所对应得后端数据页的指针
(5). 生成枝节点和根节点,根据数据量级和索引键长度,生成合适的索引树高度......
MySQL前缀索引
3 8 2020
从index2的索引树上,找到满足索引值是“zhangs”的记录,找到第一个是ID1;
到主键索引树上查到ID1这一行,判断email的值满不满足where后的条件,不满足这一行丢弃。
继续回到index2这个索引树上查下一条记录,发现如果还是"zhangs",取出ID2,再回到ID2索引树上进行判断,如果值正确,将结果返回结果集中。
重复执行以上流程,直到从index2索引树上取出的数据不是“zhangs”,循环结束。......
体系结构与管理
2 8 2019
(1)接收上层传送的SQL语句
(2)语法验证模块:验证语句语法,是否满足SQL_MODE
(3)语义检查:判断SQL语句的类型
(4)权限检查:用户对库表有没有权限
(5)解析器:对语句执行前,进行预处理,生成解析树(执行计划),说白了就是生成多种执行方案.
(6)优化器:根据解析器得出的多种执行计划,进行判断,选择最优的执行计划
代价模型:资源(CPU IO MEM)的耗损评估性能好坏
(7)执行器:根据最优执行计划,执行SQL语句,产生执行结果
(8)提供查询缓存(默认是没开启的)......