MySQL
总结MySQL相关知识点
chuyufengling
这个作者很懒,什么都没留下…
展开
-
SQL注入是什么呢?
为了防止SQL注入攻击,开发人员需要对用户输入进行充分的验证和过滤,使用参数化查询或者ORM框架来构建SQL查询语句,避免直接拼接用户输入到SQL语句中。攻击者可以在输入字段中插入恶意的SQL代码,这些代码会被拼接到应用程序原本的SQL查询语句中,从而改变原本的查询逻辑,甚至执行恶意操作。在这个例子中,`#{userId}`就是一个参数,当这个参数传递给SQL查询语句时,MyBatis会自动将其转换为一个安全的参数化查询,而不是简单地将用户输入直接拼接到SQL语句中。原创 2024-01-07 20:50:56 · 630 阅读 · 0 评论 -
什么是索引下推
在使用索引下推之后,在存储引擎查询到满足name条件的两条数据之后,(1,张三,20),(10,张四,19),并不会立即回表查询,而是继续判断age是否等于20,如果不是就过滤掉,因此这个时候满足条件的只有(1,张三,20),然后会根据id回表查询,因此这个时候就只会经历1次回表查询,减少了磁盘io的次数,提高检索效率。在没有使用索引下推的情况下,MySQL根据联合索引查询name字段满足"张%"的数据,假设有两条(1,张三,20),(10,张四,19);原创 2024-01-05 15:20:43 · 1008 阅读 · 0 评论 -
MySQL索引失效场景及原理
如果没有遵循这个规则,如查询条件中只有第二个字段,因此无法将该字段与索引中已经按照第一列字段排序的结果进行比较,因此失效。or前后连接了两个条件,意味着会查询满足任意条件的数据,如果其中一个没有索引,那么显然该字段无法使用索引。因为索引保存的是索引字段的原始值,因此对索引进行函数运算之后,就无法与索引节点中的值进行比较,因此失效。对于索引是字符类型的,如果使用时候没有加引号,如phone字段是字符类型,但是使用时候没有加引号。则因为无法与索引节点进行比较,进行二分查找,因此索引会失效。原创 2024-01-05 14:50:55 · 501 阅读 · 0 评论 -
MySQL面试题
所有的数据都会出现在叶子节点。叶子节点形成一个单向链表。非叶子节点仅仅起到索引数据作用,具体的数据都是在叶子节点存放的。,随着新数据的插入,叶子节点会慢慢分裂,逻辑上连续的叶子节点在物理上往往不连续,甚至分离的很远,但做范围查询时,会产生大量读随机IO。对于大量的随机写也一样,举一个插入key跨度很大的例子,如7->1000->3->2000 ... 新插入的数据存储在磁盘上相隔很远,会产生大量的随机写IO。原创 2023-12-07 12:50:07 · 410 阅读 · 0 评论 -
MySQL常见面试题汇总
何谓事务?何谓数据库事务?那数据库事务有什么作用呢?事务特性并发事务带来了哪些问题?不可重复读和幻读有什么区别?并发事务的控制方式有哪些?SQL 标准定义了哪些事务隔离级别?MySQL 的隔离级别是基于锁实现的吗?MySQL 的默认隔离级别是什么?原创 2023-12-28 15:55:08 · 620 阅读 · 1 评论 -
MVCC实现原理
4、如果当前被访问记录的trx_id属性值介于ReadView中 up_limit_id 和 low_limit_id 之间的话,那么此时就需要分情况讨论了。值相同,说明当前事务修改的记录就是在当前事务下操作的,那当然是对我们可见的了,因此可以修改这条记录。)即:当前已经有其它的事务正在修改该条记录,并且还未提交,此时这条记录对我们不可见。1、如果当前被访问记录的trx_id属性值与ReadView中的。,因此,这条记录对我们来说依然是不可见的,我们不能修改。)下一个将要被分配的事务id。原创 2023-06-16 08:14:10 · 64 阅读 · 0 评论 -
Mysql隐式转换与索引失效
where条件查询左右类型不一致,Mysql会进行隐式转换,如果左边为char型,右边为int型,则会导致索引失效。如“123a”,“123b”转换之后都会变成123,进而有可能走全表扫描,如此索引就会失去作用。因为char型数据转换成int时后,可能会造成多个char型转换成同一个int型。原创 2023-06-10 22:14:59 · 196 阅读 · 0 评论 -
B+树的深度与宽度
但也不是越浅越好,如果树的高度过浅,每个节点需要存储的关键字数量就会变得过多,这会导致节点的大小过大,占用更多的磁盘空间和内存空间,从而降低系统的整体性能。同时,如果很浅,那在插入、删除数据时候,可能会带来更多的节点的分裂与合并。Mysql一次读取一页(16kb)数据,就是一次磁盘IO,如果页多的话,会需要多次磁盘IO。因此B+树不能太浅。B+树越深意味着会有更多次的磁盘IO,由于磁盘IO消耗比较大,因此尽量要让B+尽量的浅;B+树是MyISAM 和 InnoDB 实现 BTree 索引结构。原创 2023-06-15 09:39:43 · 215 阅读 · 0 评论 -
Dbeaver一次执行多条MySQL语句报错
选择驱动属性,将allowMultiQueries设置为TRUE,然后点击确定即可。解决方法,打开编辑选项。原创 2023-09-05 10:54:08 · 1772 阅读 · 0 评论