随笔分类 - MySQL
摘要:数据类型的选取原则: - **更小的通常更好**:尽量使用可以正确存储数据的最小数据类型(它们占用更少的磁盘,内存,cpu缓存,处理时需要的cpu周期也更少) - **简单**:简单数据类型的操作通常所需cpu周期更少,例如整型就是比字符串类型的操作代价更低 - **尽量避免NULL**:最好指定列
阅读全文
摘要:基本架构 SpringBoot+MybatisPlus实现多数据源,借助Spring-AOP实现数据源的动态切换. 整体流程 定义注解,使用该注解配置具体方法使用的数据源,用于指明方法使用的数据源github 定义通知advice:实现接口MethodBeforeAdvice, AfterRetur
阅读全文
摘要:例如按id取模进行水平分表分n张表,分页查询第page页的rows条数据,当前页最后一条记录是索引:currIndex = (page-1)*rows;以下为按id进行排序分页进行示例说明 ###主流的有4种解决方案(未经验证,仅作个人笔记): 额外保存一张表,存储所有库所有表的全部id属性; 分页
阅读全文
摘要:MySQL数据结构 为什么MySQL的索引要使用B+树而不是其它树形结构?比如B树? **B树:**因为B树不管叶子节点还是非叶子节点,都会保存数据,这样导致在非叶子节点中能保存的指针数量变少(有些资料也称为扇出),指针少的情况下要保存大量数据,只能增加树的高度,导致IO操作变多,查询性能变低; *
阅读全文
摘要:基本特性-ACID 原子性(Atomicity):事务是一个原子操作单元,其对数据的修改,要么全都执行,要么全都不执行。 一致性(Consistent):在事务开始和完成时,数据都必须保持一致状态。这意味着所有相关的数据规则都必须应用于事务的修改,以保持数据的完整性;事务结束时,所有的内部数据结构(
阅读全文
摘要:###MySQL慢查询监测开启 慢查询日志 慢查询日志是将mysql服务器中影响数据库性能的相关SQL语句记录到日志文件,通过对这些特殊的SQL语句分析,改进以达到提高数据库性能的目的。 通过使用--slow_query_log[={0|1}]选项来启用慢查询日志。所有执行时间超过long_quer
阅读全文
摘要:MySQL架构 Replication(MR)异步复制 无法保证当master失效后所有的updates已经复制到了slaves上,只有重启master才能继续恢复这些数据,如果master因为宿主机器物理损坏而无法修复,那些尚未复制到slaves上的updates将永久性丢失;因此异步方式存在一定
阅读全文
摘要:MySQL服务器硬件优化 硬盘:mysql 对磁盘的要求比较高,包括随机读写的带宽和IOPS和顺序读写的带宽和IOPS,可以通过使用高转速磁盘、商业FC存储、固态硬盘等方式提高IOPS及读写带宽; 内存:mysql 服务器内存越高,可加载的热点索引数据越多,可提供给操作线程的内存越多。Mysql 读
阅读全文
摘要:###InnoDB存储引擎的存储结构 空间( filespace) 空间是由文件所组成的链表,空间中的文件有一定的顺序。每个空间 用一个空间id来标识。id=0 的空间是系统表空间。 空间可以分为三类: 表空间:保存的是数据库文件; 日志空间:保存的是日志文件; 日志备份空间:保存的是日志文件的备份
阅读全文
摘要:DQL(Data QueryLanguage): 数据查询语言,SELECT; DML(Data Manipulation Language):数据操纵语言,INSERT,UPDATE,DELETE; DDL(Data Definition Language):数据定义语言,创建表、视图、索引等;
阅读全文
摘要:索引的常见模型有哈希表、有序数组和搜索树。 哈希表:一种以 KV 存储数据的结构,只适合等值查询,不适合范围查询。 有序数组:只适用于静态存储引擎,涉及到插入的时候比较麻烦。可以参考 Java 中的 ArrayList。 搜索树:按照数据结构中的二叉树来存储数据,不过此时是 N 叉树(B+树)。广泛
阅读全文
摘要:1 BinLog BinLog 是记录所有数据库表结构变更(例如 create、alter table)以及表数据修改(insert、update、delete)的二进制日志,主从数据库同步用到的都是 BinLog 文件。 BinLog 日志文件有三种模式。 | format | 定义 | 优点 |
阅读全文
摘要:#### MySQL锁的类型 **加锁作用** 当多个用户并发地存取数据时,在数据库中就可能会产生多个事务同时操作同一行数据的情况,若对并发操作不加控制就可能会读取和存储不正确的数据,破坏数据的一致性(一种典型的并发问题——丢失更新) **InnoDB加锁机制** | 加锁机制 | 描述 | | |
阅读全文
摘要:摘自阿里巴巴Java开发手册 (一) 建表规约 1. 【强制】表达是与否概念的字段,必须使用is_xxx的方式命名,数据类型是unsigned tinyint( 1表示是,0表示否)。 > 说明:任何字段如果为非负数,必须是unsigned。 2. 【强制】表名、字段名必须使用小写字母或数字,禁止出
阅读全文