
数据库
御镜堂
Hello,Future.
I'm coming now.
展开
-
【数据库】索引失效
1.对于组合索引,不是使用的第一部分,则不会使用索引2.or语句前后没有同时使用索引。要想使用or,又想让索引生效,只能将or条件中的每个列都加上索引。3.如果列类型是字符串,那一定要在条件中使用引号引起来,否则不会使用索引4.如果mysql估计使用全表描述比使用索引快,则不使用索引。5.在索引列上做运算或者使用函数6.以%开头的LIKE查询,模糊匹配。...原创 2019-10-29 15:00:12 · 282 阅读 · 0 评论 -
【数据库】涉及命令的问题
一、truncate与delete的区别是什么TRUNCATE TABLE:删除内容、不删除定义、释放空间DELETE TABLE:删除内容、不删除定义、不释放空间DROP TABLE:删除内容和定义,释放空间1.truncate table表名,只能删除表中全部数据delete from 表名 where...,可以删除表中全部数据,也可以删除部分数据2.delete f...原创 2019-10-29 14:55:39 · 363 阅读 · 0 评论 -
【数据库】解决幻读的方法
一、幻读幻读就是从同一事务中,不同的查询得到的记录数不一样。二、为什么要解决幻读因为在高并发的情况下,我们要保证数据的一致性和事务与事务之间的隔离性。三、MySQL如何解决幻读1)多版本控制(MVCC)2)Next-Key锁(当前读)四、多版本控制(MVCC)的原理InnoDB的MVCC,是通过在每行记录后面保存两个隐藏的列来实现的,这两个列分别保存了这个行的创建时...原创 2019-10-18 10:55:48 · 1639 阅读 · 1 评论 -
【数据库】索引的实现原理
目前大部分数据库系统及文件系统都采用了B-Tree(B树)或其变种B+Tree(B+树)作为索引结构。B+Tree是数据库系统实现索引的首选数据结构。在MySQL中,索引属于引擎概念级别的概念,不同存储引擎对索引的实现方式是不同的。MyISAM索引实现MyISAM引擎采用B+树作为索引结构,叶节点的data域存放的是数据记录的地址。下图是MyISAM索引的原理图:这里设表...转载 2019-09-23 19:18:42 · 221 阅读 · 0 评论 -
【面试】为什么B+树是3层
索引的底层实现是怎样的?为什么B+树是三层?一个高度为3的B+树大概可以存放:1170*1170*16=21902400行数据。所以在InnoDB中B+树高度一般为1-3层,它就能满足千万级的数据存储。在查找数据时一次页的查找代表一次IO,所以通过主键索引查询通常只需要1-3次逻辑IO操作即可查找到数据。...原创 2019-09-21 18:52:27 · 6231 阅读 · 0 评论 -
【多线程和并发】死锁
死锁产生的原因1)竞争可重用不可抢占式的资源2)竞争可消耗资源3)进程推进顺序不当.可重用性资源:可供重复使用多次的资源.不可抢占性资源:一旦系统把某资源分配给该进程后,就不能将它强行收回,只能在进程使用完后自动释放.可消耗资源:又叫临时性资源,它是在进程运行期间,由进程动态的创建和消耗的.产生死锁的四个必要条件1)互斥条件:一个资源每次只能被一个进程使用;...原创 2019-09-20 16:58:42 · 321 阅读 · 0 评论 -
【数据库】乐观锁与悲观锁
锁有两种机制:悲观锁和乐观锁悲观锁:锁如其名,它是世界观就是悲观的,它认为别人访问正在改变的数据的概率是很高的,所以从数据开始更改时就将数据锁住,直到更改完成才释放。一个典型的依赖数据库的悲观锁调用: select * from account where name = "Erica" for update这条SQL语句锁定了account表中所有符合检...原创 2019-09-20 20:42:15 · 206 阅读 · 0 评论 -
【数据库】SQL注入的问题
SQL语句应该考虑哪些安全性1)防止SQL注入,对特殊字符进行过滤,转义或者使用预编译的SQL语句绑定变量。2)当SQL语句运行出错时,不要把数据库返回的错误信息全部显示给用户,以防止泄露服务器和数据库的相关信息。什么叫做SQL注入,如何防止?举个例子:后台写的Java代码拼的SQL如下:public List getInfo(String ename){ ...原创 2019-09-20 19:52:58 · 284 阅读 · 0 评论 -
【数据库】涉及锁的问题
如何并发访问数据库加锁说下数据库的锁机制,数据库中都有哪些锁锁是一种并发控制技术,锁是用来在多个用户同时访问同一个数据的时候保护数据的。一、有两种基本的锁类型共享锁(S):多个事务可封锁一个共享页;任何事务都不能修改该页;通常是该页被读取完毕,S锁立即被释放。在执行select语句的时候需要给操作对象(表或者一些记录)加上共享锁,但加锁之前需要检查是否有排它锁,如果没有,...原创 2019-09-20 17:35:37 · 479 阅读 · 0 评论 -
【数据库】涉及事务的问题
数据库事务正确执行的四个基本要素(事务的4个属性)事务是由一组SQL语句组成的逻辑处理单元。ACID:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)。原子性:一个事务中的所有操作,要么全部完成,要么全部不完成,不会结束在中间某个环节。事务在执行过程中发生错误,会被回滚到事务开始前的状态,就像这个事务从来没有执...原创 2019-09-20 16:09:13 · 585 阅读 · 0 评论 -
【数据库】涉及索引的问题
索引分类索引的作用是:排列好次序,使得查询时可以快速找到。唯一索引/非唯一索引、主键索引(主索引)、聚集索引/非聚集索引、组合索引。1、唯一索引是在表上一个或者多个字段组合建立的索引,这个或者这些字段的值组合起来在表中不可以重复。如下表中,为 学号 建立索引学号 姓名-----------------------001 ...原创 2019-09-19 22:32:24 · 319 阅读 · 0 评论 -
【数据库】优化查询的方法
一、使用索引尽量避免全表扫描,首先应该考虑在where及order by,group by设计的列上建立索引。二、优化SQL语句通过explain(查询优化神器)来查看SQL语句的执行效果,可以帮助选择更好的索引和优化查询语句。例如:expain select * from X 任何地方都不要使用select * from X,用具体的字段代替 * ,不要返回任何用不到的字段 不在...原创 2019-09-18 12:15:04 · 661 阅读 · 0 评论 -
【数据库】MySQL存储引擎的区别
MySQL数据库中,最常用的两种引擎是InnoDB和MyISAM。InnoDB是MySQL的默认存储引擎。一、事务处理上方面MyISAM强调的是性能,查询的速度比InnoDB类型更快,但是不提供事务支持,InnoDB提供事务支持事务。二、外键MyISAM不支持外键,InnoDB支持外键。三、锁MyISAM只支持表级锁,InnoDB支持行级锁和表级锁,默认是行级锁,行锁大...原创 2019-09-15 17:56:23 · 200 阅读 · 0 评论 -
【数据库】涉及三范式的问题——BCNF
三范式-BCNF(数据表设计)1NF:字段不可再分,原子性2NF:满足第二范式必须先满足第一范式。一个表只能说明一个事物。非主键属性必须完全依赖于主键属性。3NF:满足第三范式必须先满足第二范式。每列都与主键有直接关系,不存在传递依赖。任何非主属性不依赖于其他非主属性。不符合第一范式的例子(关系数据库中创建不出这样的表):表:字段1,字段2(字段2.1,字段2.2)...原创 2019-01-26 23:25:59 · 929 阅读 · 0 评论 -
【数据库】在IntelliJ IDEA中MySQL8.0版本无法建立连接
报错前driverClassName=com.mysql.jdbc.Driverurl=jdbc:mysql://127.0.0.1:3306/travel修改后driverClassName=com.mysql.cj.jdbc.Driverurl=jdbc:mysql://127.0.0.1:3306/travel?useUnicode=true&characterE...原创 2019-08-16 10:48:05 · 1525 阅读 · 0 评论