摘要:
分区原理 根据一定规则将数据库中的一张表分解成多个更小的,容易管理的部分。从逻辑上看只有一张表,但是底层确实由多个物理分区组成。 分区后,表面上还是一张表,但数据散列到多个位置。应用程序读读写的时候操作的还是大表名字,MySQL自动去组织分区的数据。 分区类型 Range分区 插入数据 我们比较一下 阅读全文
摘要:
水平分表 水平分表是将数据分别均匀的分配到多张表结构相同的表中,以减小单表的查询和读写压力。 数据分配策略 通过取模的方式将数据分配到不同的表。例如:一共3张表,id%3结果就是分配的表序号。 遇到的问题 解决方案 垂直分表 垂直分表就是将表按照字段划分多个表。 拆分原则 把大字段独立存储到一张表中 阅读全文
摘要:
悲观锁 它指的是对数据被外界(包括本系统当前的其他事务,以及来自外部系统的事务处理)修改持保守态度,因此,在整个数据处理过程中,将数据处于锁定状态。悲观锁的实现,往往依靠数据库提供的锁机制(也只有数据库层提供的锁机制才能真正保证数据访问的排他性,否则,即使在本系统中实现了加锁机制,也无法保证外部系统 阅读全文
摘要:
InnoDB引擎特点简述 支持事务 支持外键 必须要有主键,聚焦索引 不支持全文检索 使用行锁 行锁特点 支持事务,加锁开销大,加锁慢,会出现死锁,锁的粒度小,并发下等待锁的概率较低,所以支持高并发。 手动事务语法 手动测试行锁需要首先关闭自动提交,每个会话都需要关闭自动提交 中间执行SQL 最后执 阅读全文
摘要:
事务是一系列操作组成的工作单元,该工作单元内的操作是不可分割的,也就是说要么全部执行,要么全部都不执行。 四大属性 原子性(atomicity)。一个事务是一个不可分割的工作单位,事务中包括的诸操作要么都做,要么都不做。 一致性(consistency)。事务必须是使数据库从一个一致性状态变到另一个 阅读全文
摘要:
MyISAM引擎特点简述 不支持事务 不支持外键 较小的逐渐范围 支持全文检索 不支持GIB数据 查询效率高 使用表锁 表锁特点 锁住整个表,所以开销小,加锁比较快,无死锁情况,锁的粒度较大,在并发情况下,产生锁等待的概率比较高,所以支持的并发数较低,一般用于查找。 表锁类型 读锁:也称为共享锁,针 阅读全文
摘要:
慢查询 慢查询是MySQL提供的一种查询SQL执行效率的工具,通过该工具的设置可以获取SQL执行的信息。 查看慢查询 开启/关闭慢查询 查看慢查询时间 设置慢查询时间 查看慢查询日志测次数 查看没有使用索引的查询 如果值设置为ON,则会记录所有没有利用索引的查询(注意:如果只是将log_querie 阅读全文
摘要:
适合建索引的情况 频繁作为WHERE条件语句查询的字段 关联字段需要建索引 排序字段可以建索引 分组字段需要建索引 使用到聚合函数的字段 不适合建索引的情况 频繁更新的字段 WHERE条件用不到的字段 表数据量较小 数据重复较为均匀,例如性别,布尔类型等 WHERE条件中参与列计算的字段 索引失效的 阅读全文
摘要:
索引 索引是通过BTREE结构进行数据检索的,以平衡二叉树检索的方式缩短数据查询的时间。 索引类型 主键索引(primary),在innodb存储引擎下,由于数据和索引都在ibd文件里存储,所以数据的组织方式是由主键索引的BTREE结构,即聚簇索引,如果表没有主键系统会查找一列唯一数据列当主键,如果 阅读全文
摘要:
数据库性能下降可能的原因 I/O吞吐量小,形成了瓶颈效应 CPU性能差 内存不足,磁盘空间不足 没有检索或者没用到检索 查询语句性能差,没有优化 检索返回的数据量太大 返回了不必要的字段 锁或者死锁 配置参数没有优化 如果是服务器性能问题,可以使用这些指令进行查询:top命令、htop命令、free 阅读全文