MYSQL事务隔离

MYSQL的事务隔离级别理解 read-uncommitted 对应 P1 脏读; read-committed 对应 P2 不可重复读; repeatable-read 对应 P3 幻读;MYSQL默认级别 serializable 没有与之对应的异常现象。(发生大量锁,超时,等待) MYSQL事务执行 set tx_isolation='repeatable-read'; select @@tx_isolation; start transaction; *****mysql select More


MYSQL主从延迟问题原因及解决

彻底解决的策略 方案1. 业务妥协,从主库读 方案2. 同步写入缓存redis,修改完成5分钟内都直接从redis读。 其他让延迟变好的策略 1.并行复制 2.降低并发,增加机器 思维导图 1.常见的主从架构 随着日益增长的访问量,单台数据库的能力已经捉襟见肘。因此采用主库写数据,从库读数据这种将读写分离开的主从架构便随之衍生了出来。 More


MYSQL索引原理深入学习

1.索引的本质是什么 2.MYSQL为何多数用B+Tree,而不是其他 3. BTree的特点 4. B+Tree的特点 4.1 为何B+Tree叶子节点多了一个指针 4.2 为什么B+Tree上层节点不存储数据 5. 两种不同的索引分别存储文件什么样 6. Innodb索引实现原理 6.1 为什么innodb表必须有主键,并推荐【整型自增】 6.2 为什么非主键索引结构叶子节点存储的是主键 More


订单过期30分钟,不支付自动取消方案

订单过期30分钟,不支付自动取消方案 1. 扫描数据库 最简单,粗暴的办法。开个任务,每3分钟扫描一次数据库 select orderid from table where .... 服务器开启crontab 定时扫描 优点:容易实现,支持集群服务 缺点: 1. 服务器消耗大 2. 存在延迟,并不是精确的3分钟 3. 如果订单量很大,比如1000万条没有付款,数据库压力很大 2. JDK延迟 More


MYSQL读写分离,多库并行写入,主从复制问题

问题:你们有没有做 MySQL 读写分离?如何实现 MySQL 的读写分离?MySQL 主从复制原理的是啥?如何解决 MySQL 主从同步的延时问题? 问题1:如何实现 MySQL 的读写分离? 其实很简单,就是基于主从复制架构,简单来说,就搞一个主库,挂多个从库,然后我们就单单只是写主库,然后主库会自动把数据给同步到从库上去。 问题2:MySQL 主 More


如何保证缓存与数据库的双写一致性?

如何保证数据库与缓存的一致性 1. 对删除缓存进行重试,数据的一致性要求越高,我越是重试得快。 2. 定期全量更新,简单地说,就是我定期把缓存全部清掉,然后再全量加载。 3. 对同一数据的读取/写入请求串行,保证同一数据的请求消息,都会路由到同一个服务上。一般来说,如果允许缓存可以稍微的跟数据库偶尔有不一致的情况,也就是说如果你的系统 More


MYSQL索引学习

总结: 索引的原则: 1. 最左前缀匹配 2. 区分度高的列作为索引,索引并非建立的越多越好,适用就好3. 索引的字段尽量的小4. 尽量扩展索引,建立联合索引,不是建多个索引5. 少用select *6. not in,not exists,<> != 不等于会不触发索引 小于 > 大于 <= >= 这个根据实际查询数据来判断,如果全盘扫描速度比索引速度要快则不走索引 。 建索引的 More


思路练习:mysql 三亿条大表如何不影响业务下增加一新列

条件: 3亿数据服务不能停,就是不能影响业务进行 常规操作增加一列,ALTER TABLE 你的表 ADD COLUMN 新列 varchar(128);常规的办法会导致锁表,服务暂停 所以大致思路为 简易过程如下: 新建一个和 Table1 完全同构的 Table2在表 Table2 上执行 ALTER TABLE 你的表 ADD COLUMN 新列 char(128)将 Table1 中的数据拷贝到 Table2,最好用 More


数据库设计三大范式和BCNF理解

第一范式(1NF):数据库表中的字段都是单一属性的,不可再分。 这个单一属性由基本类型构成,包括整型、实数、字符型、逻辑型、日期型等。例如,如下的数据库表是符合第一范式的:字段1 | 字段2 | 字段3 | 字段4 而这样的数据库表是不符合第一范式的:字段1 | 字段2 | 字段3 | 字段4 | 字段3.1 字段3.2 | 有时候如果把一堆信息 More


MYSQL删除记录后优化表空间

服务器记录了一些操作日志经常把空间吃满了 select id,send_email,user_email,from_unixtime(send_time) from email_log order by id desc limit 1; from_unixtime 转换linux格式为可以阅读的格式 删除ID小于20万的数据 delete from email_log where id < 200000; optimize table email_log