
mysql
文章平均质量分 75
主要是mysql学习中的总结
Rockict_z
这个作者很懒,什么都没留下…
展开
-
【论文阅读】Machine Learning, Linear Algebra, and More: Is SQL All You Need?
尽管SQL在简单的分析查询中无处不在,但它很少用于更复杂的计算,如机器学习、线性代数和其他计算密集型算法。这些算法通常以过程方式编程,看起来与声明性SQL查询非常不同。然而,SQL实际上提供了执行各种计算的构造。在本文中,我们展示了如何将过程结构转换为SQL-启用复杂的SQL-only算法。在算法中使用SQL可以使计算更接近数据,只需要最小的用户权限,并增加软件的可移植性。生成的SQL算法的性能在很大程度上取决于底层DBMS和SQL代码。原创 2024-05-13 19:57:42 · 1043 阅读 · 0 评论 -
【MySQL】多版本并发控制
ReadView就是事务在使用MVCC机制进行快照读操作时产生的读视图。InnoDB为每个事务构造一个数组用来记录并维护系统当前活跃事务的ID。(活跃指的是启动了但没有提交)原创 2024-03-27 15:56:16 · 1065 阅读 · 0 评论 -
【MySQL】一些数据库调优策略
第一步、选择合适的数据库管理系统 如果对事务性处理以及安全性要求较高的话,可以采用、等商业的数据库产品。也可以采用开源的,事务处理采用,非事务处理采用。第二步、优化表设计 数据表的设计直接影响了后续的SQL查询语句。在使用的情况下,我们还可以根据不同表的使用需求,选择不同的存储引擎。此外,还有以下的优化原则:第三步、优化逻辑查询 SQL的查询优化,分为以及,其中,逻辑查询优化通过改变SQL语句的内容让SQL执行更加高效,方式有和。 对于SQL的查询重写,包括子查询优化、等价谓词重写、视图重写、条件原创 2024-03-14 20:27:39 · 957 阅读 · 0 评论 -
【MySQL】权限管理和访问控制
MySQL服务器通过权限表来控制用户对数据库的访问,权限表存放在MySQL数据库中。其中有user表、db表、table_priv表、column_priv表、proc_priv表等。MySQL在接收到用户的请求后,会使用user表中的host、user和authentication_string这三个字段匹配客户端信息。如果连接核实没有通过,服务器完全拒绝访问,如果链接核实通过,进入阶段2等待用户请求。顺序为user->db->table_priv->columns_priv。原创 2024-01-18 19:15:36 · 654 阅读 · 0 评论 -
【MySQL】变量、流程控制、游标、触发器
打开游标的时候,SELECT查询语句的查询结果集就会送到游标工作区,为后面游标的逐条读取结果集中的记录做准备。游标可以对结果集中的每一条记录进行定位,并对指向的记录中的数据进行操作的数据结构。游标查询结果集中的字段数,必须与INTO后面的变量数相同,否则会报错。游标会占据系统资源,不关闭的话会一直保持到存储过程结束。系统变量分为全局系统变量以及会话系统变量,变量分为系统变量以及用户自定义变量。会话用户变量 vs 局部变量。使用@开头,作用于为当前对话。可以看做是continue。可以看做为break。原创 2024-01-15 15:03:06 · 408 阅读 · 0 评论 -
【MySQL】索引优化与关联查询优化
如果对索引的过滤条件中限制了一定范围,那么使用B+数来查询后,索引中剩下字段也就没有意义来。在过滤条件(WHERE)中使用了索引的情况下,要按照索引建立时的顺序从左往右筛选,如果中间跳过了某个字段,比如跳过了。在内连接中小表驱动大表,优化器会对两个表进行计算,将数据量小的表作为驱动表,数据量大的表作为被驱动表。使用了越多的属性来建立索引,会加快SQL查询的效率,能加速每一个属性的查询。,可以设置0为INT类型字段的初始值,空字符串为字符串类型的初始值。具有索引,因此,这里的被驱动表仍然是。原创 2024-03-06 21:36:46 · 1353 阅读 · 0 评论 -
【MySQL】性能分析工具EXPLAIN
执行计划的一条记录表示MySQL对某个表的执行查询时的访问方法。type列明确了这个访问方法。该属性表示实际用到的索引长度,可以帮助来检查是否充分的用上了索引。查询的每一行记录都对应一个单表,其中也分为驱动表和被驱动表。EXPLAIN的使用与DESCRIBE基本相同。等值查询时,与索引列进行等值匹配的对象信息。某表经过搜索条件过滤后剩余的记录条数的百分比。其中,s1是驱动表,s2是被驱动表。可能用到的索引和实际上使用的索引。预估要读取的条目数,越小越好。会根据产生的错误进行相关提示。原创 2024-03-05 20:09:37 · 433 阅读 · 0 评论 -
【MySQL】存储引擎
InnoDB是MySQL的默认事务型引擎,被设计用来处理大量短期事务。可以确保事务的完整提交和回滚。InnoDB是为处理巨大数据量的最大性能设计的。在有更新和删除操作时,优先选择InnoDB。表名.idb 存储索引和数据。具备外键支持的事务存储引擎。表名.frm 存储表结构。主要的非事务处理存储引擎。原创 2024-01-19 19:50:53 · 567 阅读 · 0 评论 -
【MySQL】逻辑架构
3、缓存失效的情况,对于频繁使用更新删除等操作的数据库来说,MySQL的缓存系统在检测到表数据更改后,使用该表的所有高速缓存查询都将无效并从高速缓存中删除。分析器先先做词法分析,对于输入的由多个字符串以及空格组成的一条SQL语句,识别出里面的MySQL关键字以及其中的字符串代表什么。2、对于时效性函数会出错,比如使用NOW获取现在的时间,而缓存会直接返回结果,从而导致使用了NOW但是返回的并不是现在的时间。插件式的存储引擎,负责了MySQL中的数据的存储和提取,对物理服务器级别维护的底层数据执行操作。原创 2024-01-18 19:20:47 · 606 阅读 · 0 评论 -
【MySQL】索引
如果把完整的用户数据放到叶子结点是可以不用回表,但是这就相当于每建立一颗 B+树都需要把所有的数据都拷贝一遍,过于浪费存储空间。1、聚簇索引的叶子结点存储的是数据记录,非聚簇索引的叶子结点存储的是数据位置。2、一个表只能有一个聚簇索引,即只能有一种排列存储方式,但可以有多个非聚簇索引,也就是多个索引目录提供数据检索。聚簇索引是一种数据存储方式,即所有的用户数据都存储在了叶子结点上,也就是索引即数据,数据即索引。3、使用聚簇索引时数据的查询效率高,但是插入、删除、更新操作,效率比非聚簇索引低。原创 2024-01-22 16:23:21 · 489 阅读 · 0 评论 -
【MySQL】事务日志
事务的隔离性由锁机制实现,事务的原子性、一致性和持久性由redo日志和undo日志实现。原创 2024-03-25 21:41:33 · 907 阅读 · 0 评论 -
【MySQL】事务
事务指的是一组逻辑操作单元,使数据从一种状态变换到另一种状态。当在一个事务中执行多个操作时,要么所有的事务都被提交然后永久的保留下来,要么整个事务回滚回最初状态。ACID特性原子性:指事务不可分割一致性:指事务执行前后,数据从一个合法性状态变换到另一个合法性状态。(合法性状态指的是满足预定的约束的状态,即自己定义的状态)隔离性:指一个事务的执行不能被其他事务干扰,并发执行的各个事务之间不能互相干扰持久性:一个事务一旦被提交,它对数据库的改变是永久性的。原创 2024-03-18 21:39:52 · 443 阅读 · 0 评论 -
【MySQL】范式
一范式要求列不可再分,二范式要求不能部分依赖,三范式要求不能传递依赖,要直接依赖主键。原创 2024-03-12 21:06:43 · 604 阅读 · 0 评论 -
【MySQL】InnoDB数据存储结构
主要包含了对页面之间双向链表的表示、页面校验和、页面最后被修改对应的日志序列位置用户记录: 用户记录中的记录按照指定的行格式一条条摆在该区域,相互之间形成单链表。页目录:1、页目录分组的个数如何确定?由InnoDB规定:最小记录所在的分组只能有一条记录,最大记录所在分组的记录条数只能在18之间,剩下的分组中记录的条数在48之间。2、页目录结构下如何快速查找记录?1、通过二分法确定该记录所在的槽,并记录该槽所在分组中主键值最小的那条记录。2、通过记录的next_record属性遍历该槽所在组中的所有记录。页原创 2024-01-23 20:15:34 · 513 阅读 · 1 评论 -
【MySQL】子查询优化、排序优化和覆盖索引
单路排序从磁盘中读取查询需要的所有列,在buffer中对它们进行排序后输出,其效率更快,但是需要更多的内存空间。由于其需要更多得内存空间,所以也存在一定的问题,如果内存空间无法满足,则需要更多的磁盘IO来支持该算法。双路排序会进行两次磁盘扫描,第一次从磁盘去除排序字段并进行排序,第二次根据buffer中排序完的字段从磁盘中读取其他字段的值。,原因在于所有的排序都是在条件过滤之后执行的,如果过滤了大部分数据后只剩下几百几千条数据,那么。的概率也就越大,会带来频繁的IO活动影响效率。,从而导致过多的磁盘IO。原创 2024-03-07 21:37:06 · 681 阅读 · 0 评论 -
【MySQL】索引下推
索引下推(ICP)是一种在存储引擎层使用过滤数据的优化方式。使用ICP的好处在于其可以减少存储引擎必须访问基表的次数和MySQL服务器必须访问存储引擎的次数。两个字段先进行筛选(address并不是索引中的字段,所以不判断它),筛选完后得到的数据量较小,此时再回表的效率较高。但是对于索引字段都能生效的情况来说,索引下推的意义不大,此时已经是对三个字段进行筛选后再回表加载数据。,并从磁盘中调取符合条件的数据记录进入内存,然后再以剩下的条件进行过滤。的条件导致该语句索引失效,但是索引中仍然包含该字段。原创 2024-03-07 22:19:43 · 375 阅读 · 0 评论 -
【MySQL】锁
读-读情况并发事务相继读取相同的记录,不会产生什么问题。写-写情况这种情况下会发生脏写的问题。读-写或写-读情况会发生脏读、不可重复读、幻读的情况。原创 2024-03-26 21:16:42 · 654 阅读 · 0 评论 -
【MySQL】约束
实体完整性,同一个表中不能有两条无法区分的记录域完整性,记录的属性具有范围引用完整性,例如,员工所在部门,在部门表中一定能找到这个部门用户自定义完整性,例如,用户名唯一、密码不能为空。原创 2023-12-20 23:11:02 · 187 阅读 · 0 评论