mysql查询优化
文章平均质量分 95
qq_43085588
这个作者很懒,什么都没留下…
展开
-
MySQL数据库备份与恢复
数据迁移(data migration)是指选择、准备、提取和转换数据,并将数据从一个计算机存储系统永久地传输到另一个计算机存储系统的过程。此外,验证迁移数据的完整性和退役原来旧的数据存储,也被认为是整个数据迁移过程的一部分。数据库迁移的原因是多样的,包括服务器或存储设备更换、维护或升级,应用程序迁移,网站集成,灾难恢复和数据中心迁移。根据不同的需求可能要采取不同的迁移方案,但总体来讲,MySQL数据迁移方案大致可以分为物理迁移和逻辑迁移两类。通常以尽可能自动化。原创 2023-08-03 17:22:17 · 4681 阅读 · 0 评论 -
MySQL主从复制
在实际工作中,我们常常将redis作为缓存与MySQL配合使用,当有请求的时候,首先会从缓存中进行查找,如果存在就直接取出。如果不存在访问数据库,这样就提升了读取的效率,也减少了对后端数据库的访问压力。Redis的缓存架构是高并发架构中非常重要的一环。此外,一般应用对数据库而言都是 “读多写少”,也就是说对数据库读取数据的压力比较大,有一个思路就是采用数据库集群的方案,做主从架构,进行读写分离,这样同样可以提升数据库的并发 处理能力。原创 2023-08-03 16:05:08 · 285 阅读 · 0 评论 -
MySQL 其他数据库日志
中继日志只在主从服务器架构的从服务器上存在。从服务器为了与主服务器保持一直,要从服务器读取二进制日志的内容,并且把读取到的信息写入本地的日志文件中。这个从服务器本地的日志文件就叫中继日志。然后,从服务器读取中继日志,并根据中继日志的内容对从服务器的数据进行更新,完成主从服务器的数据同步。搭建好主从服务器之后,中继日志默认会保存在从服务器的数据目录下。文件名的格式是:从服务器名-relay-bin.序号。原创 2023-08-02 15:59:22 · 324 阅读 · 0 评论 -
MySQL多版本并发控制
MVCC(Multiversion Concyrrency Contril),多版本并发控制。顾名思义,MVCC是通过数据行的多个版本来管理实现数据库的并发控制。这项技术使得在innodb的事务隔离级别下执行一致性读操作有了保证。换言之,就是为了查询一些正在被另一个事务更新的行,并且可以看到他们被更新之前的值,这样在做查询的时候就不用等待另一个事务释放锁。MVCC没有正式的标准,在不同的DBMS中MVCC的实现方式可能是不同的,也不是普遍使用。原创 2023-08-01 15:18:41 · 362 阅读 · 0 评论 -
mysql事务日志
事务有4中特性:原子性,一致性,隔离性和持久性。那么事务的四种特性到底是基于什么机制实现的呢?1. 事务的隔离性由实现。2. 而事务的原子性,一致性和持久性由事务的redo日志和undo日志来保证的。~ redo log 称为,提供再写入操作,回复提交事务修改的页操作,用来保证事务的持久性。~ undo log 称为,回滚行记录到某个特定版本,用来保证事务的原子性,一致性。有的DBA或许会认为undo 是 redo的逆过程,其实不然。原创 2023-07-28 16:43:24 · 396 阅读 · 0 评论 -
事务基础知识
事务是数据库区别于文件系统的重要特性之一,当我们有了事务就会让数据库时钟保持一致性,同时我们还能通过事务的机制 恢复到某个时间点,这样可以保证已提交到的数据库的修改不会因为系统的崩溃而丢失。原创 2023-07-24 17:19:04 · 106 阅读 · 0 评论 -
数据库其它调优策略
磁盘的io能力,也就是它的寻道能力,目前的scsi高速旋转的使7200转/分钟,这样的速度,一旦访问的用户量上去了,磁盘的压力就过大,如果是每天的网站pv在150W,这样的一般的配置就无法满足这样的需求了。这样做的原因是,这些表中某些字段的操作频率很高,经常要进行查询或更新操作,而另外一些字段的使用频率却很低(冷数据),冷热数据分离,可以减少表的宽度。因为数据都是存放到数据库中,我们需要从数据库层中取除数据放到内存中进行业务逻辑的操作,当用户量增大的时候,如果频繁的进行数据查询,会消耗数据库的很多资源。原创 2023-07-03 09:45:00 · 350 阅读 · 0 评论 -
数据库的设计规范
在关系型数据库种,关于数据表设计的基本远着呢,规则就称为范式。可以理解为,一张数据表的设计结构需要满足的某种你设计标准的级别。要想设计一个结构合理的关系型数据库,必须满足一定的范式。范式的英文名称时Normal Form,简称NF。他是英国人E.F.Codd在上个世纪70年代提出的关系型数据库模型后总结出来的。范式是关系型数据库理论的基础,也是我们在设计数据库结构过程中所要遵循的规则和指导方法。有的时候不能简单按照规范要求设计数据表,因为有的数据看似冗余,其实对业务来说十分重要。这个时候,我们就要遵循。原创 2023-06-29 14:07:52 · 771 阅读 · 0 评论 -
索引优化于查询优化
理解方式一:索引是高校找到行的一个方法,但是一般数据库也能使用索引找到一个列的数据,因此他不必读取整个行。毕竟索引叶子节点存储了他们索引的数据;当能通过读取索引就可以得到想要的数据,那就不需要读取行了。一个索引包含了满足查询结果的数据就叫做覆盖索引。理解方式二:非聚簇符合索引的一种形式,它包括在查询里的select,join和where子句用到的所有列(即建索引的字段正好是覆盖查询条件中所设计的字段)。简单说就是,索引列+主键包含select 到 from 之间查询的列。原创 2023-06-26 17:15:23 · 241 阅读 · 0 评论 -
EXPLAIN 性能分析工具的使用
定位了查询慢的sql之后,我们就可以使用 explain 或 describe 工具做针对性的分析查询语句。describe 语句的使用方法与 explain 语句是一样的,并且分析结果也是一样的。mysql中有专门负责优化select语句的优化器模块,主要功能:通过计算分析系统中收集到的统计信息,为客户段请求的query提供他认为最优的执行计划(他认为最优的数据检索方式,但不见得DBA认为是最优的,这部分最耗时)。原创 2023-06-14 16:33:28 · 142 阅读 · 0 评论 -
索引创建与设计的基本原则
上创建一个索引,该索引指向创建时对应的多个字段,可以通过这几个字段进行查询,但是只有查询条件中使用了这些字段中的第一个字段时才会被使用。使用 CREATE TABEL 创建表时,除了可以定义列的数据类型外,还可以定义主键约束,外键约束或者唯一性约束,而不论创建那种约束,在定义约束的同时相当于在指定列上创建了一个索引。单列索引可以是普通索引,也可以是唯一性索引,还可以是全文索引。建立索引以后,可以通过索引进行查询。可以设置唯一性索引,在创建唯一性索引是,限制该索引的值必须是唯一的,但允许有空值。原创 2023-06-07 10:44:27 · 147 阅读 · 0 评论 -
InnoDB数据存储结构
这个问题的症结在于到现在为止我们介绍的区都是非常 纯粹的,也就是一个区被整个分配给某一个段,或者说区中的所有页面都是为了存储同一个段的数据而存在的,即使段的数据填不满区中所有的页面,那余下的页面也不能挪作他用。在一个碎片区中,并不是所有的页都是为了存储同一个段的数据而存在的,而是碎片区中的页可以用于不同的目的,比如有些页用于段B,有些页甚至那个段都属于。如果通过B+树的索引查询行记录,首先是从B+树的根开始,逐层检索,直到找到叶子节点,也就是找到对应的数据页为止,将数据也加载到内存中,页目录中的槽采用。原创 2023-06-02 18:11:03 · 158 阅读 · 0 评论 -
MySQL 数据结构选择的合理性
从Mysql的角度讲,不得不考虑一个现实的问题就是磁盘IO。如果我们能让索引的数据结构尽量减少硬盘的IO操作,所消耗的时间也就越小。可以说对索引的使用效率至关重要。查找都是索引操作,一般来说索引非常大,尤其是关系型数据库,当数据量比较大的时候,索引的大小有可能几个G甚至更多,为了减少索引在内存的占用,。当我们利用索引查询的时候,不可能吧整个索引全部加载到内存,只能,那么Mysql衡量查询效率的标准就是磁盘IO次数。原创 2023-06-01 16:58:39 · 131 阅读 · 0 评论 -
MySQL 常见索引概念
我们根据这个以C2列大小排序的B+树只能确定我们要查找记录的主键值,所以如果我们像根据C2列的值查找到完整的用户记录的话,仍然需要到 聚簇索引 中在查找一遍,这个过程称为 回表。4. 但是这个B+树的叶子节点中的记录只存储了C2和C1这两列,所以我们必须在根据C1(主键)去聚簇索引中在查找一边完成的记录。由于我们使用的是C2列的大小作为B+树的排序规则,所以我们也称这个B+树是为C2列建立的索引。,因为将会导致被更新的行移动。非聚簇索引的存在不影响数据在聚簇索引中的组织,所以一张表可以有多个非聚簇索引。原创 2023-05-26 13:52:37 · 109 阅读 · 0 评论 -
MySQL 索引的数据结构
索引是帮助MySQL高校获取数据的数据结构。索引的本质: 索引是数据结构。你可以简单的理解为 " 排好序的快速查找数据结构 ", 满足特定查找算法。这些数据结构以某种方式指向数据,这样就可以在这些数据结构的基础上实现 高级查找算法。索引是在存储引擎中实现的’, 因此每中存储引擎的索引不一定完全相同。并且每种存储引擎不一定支持所有的索引类型。同时存储引擎可以定义每个表的最大索引数和最大索引长度。所有存储引擎支持每个表至少16个索引,总索引长度至少为256字节。有些存储引擎支持更多的索引数和更大的索引长度。原创 2023-05-22 14:39:12 · 93 阅读 · 0 评论