MySQL数据库知识点总结

数据库:

 

 

  1. 数据库索引的好处:索引是对数据库表中的一个或多个列的值进行排序结构这样检索或者查询某条记录的时候就不在是顺序查找,而是使用特定的查找方式进行查找,如通过二分查找或者是hash值来查找,提高查询效率。
  2. Mysql如何查看执行计划:可以通过explain命令来帮助我们分析sql语句的执行情况来了解sql如何使用索引,连接查询的执行顺序,查询的数据行数。只需要在查询select关键字之前增加explain这个词即可。
  1. possible_keys指出mysql能使用哪些索引来优化查询,查询上所涉及的索引都会被列出,但不一定会使用;
  2. Key查询优化器查询实际使用的索引,如果没有,显示null
  3. Table 输出数据行所在的表名
  4. Id是一位数字,表示执行select语句的顺序,id相同执行顺序从上到下,越大先执行。
  5. Select_type显示对应行是简单还是复杂。不包含子查询或者union(simple)包含子查询:primary
  6. Mysql执行计划的顺序:id相同从上往下执行,id不同,大的先执行。

 

  1. 如何查看mysql中sql执行的快慢:通过profiling命令来查看sql的执行时间。
  1. 首先先检查profiling的状态(select @@profiling 0代表关闭着分析功能,把他设置为1 set profiling=1,再次查看select @@profiling,这个时候已经是1了)
  2. 查看sql语句的执行时间(show profiles);
  3. 查看sql执行耗时的详细信息。Show profile query queryID;

 

  1. 使用什么数据库连接池?连接池的工作原理?常用连接池C3PO,proxool与dbcp的区别? https://blog.csdn.net/shuaihj/article/details/14223015

        DBCP,C3P0区别:

           https://blog.csdn.net/baidu_37107022/article/details/77416852

早期数据库操作:

   ①装载数据库驱动程序;

   ②通过jdbc建立数据库连接

   ③访问数据库,执行sql语句

   ④断开数据库连接。

为了解决资源的频繁分配﹑释放所造成的问题可以采用数据库连接池技术

数据库连接池的基本思想就是为数据库连接建立一个“缓冲池”。预先在缓冲池中放入一定数量的连接,当需要建立数据库连接时,只需从“缓冲池”中取出一个,使用完毕之后再放回去。我们可以通过设定连接池最大连接数来防止系统无尽的与数据库连接。更为重要的是我们可以通过连接池的管理机制监视数据库的连接的数量﹑使用情况,为系统开发﹑测试及性能调整提供依据

 

       ①   编写class 实现DataSource 接口

       ②   在class构造器一次性创建10个连接,将连接保存LinkedList中

       ③   实现getConnection  从 LinkedList中返回一个连接

       ④   提供将连接放回连接池中方法

 

JNDI;java naming directory interface(java命名目录接口),将程序与数据库连接的建立的参数解耦开来。

区别:

1. DBCP没有自动去回收空闲连接池的功能,C3P0有自动回收空闲连接的功能。

2. Dbcp有着比c3p0更高的效率,但是在实际应用中,有出现丢失连接的可能,c3p0的稳定性比较高,它是一个开源的JDBC连接池,实现数据源和JNDI的绑定,目前使用它的开源项目有hibernate和spring。

 

(关系型数据库)事务的四大特性(ACID)

原子性(Atomicity)(写的时候要求原子性,读的时候要求一致性

原子性是指事务是一个不可分割的工作单位,事务中的操作要么全部成功,要么全部失败。比如在同一个事务中的SQL语句,要么全部执行成功,要么全部执行失败

一致性(Consistency)

官网上事务一致性的概念是:事务必须使数据库从一个一致性状态变换到另外一个一致性状态。以转账为例子,A向B转账,假设转账之前这两个用户的钱加起来总共是2000,那么A向B转账之后,不管这两个账户怎么转,A用户的钱和B用户的钱加起来的总额还是2000,这个就是事务的一致性。

隔离性(Isolation)

  事务的隔离性是多个用户并发访问数据库时,数据库为每一个用户开启的事务,不能被其他事务的操作数据所干扰,多个并发事务之间要相互隔离

持久性(Durability)
  持久性是指一个事务一旦被提交,它对数据库中数据的改变就是永久性的,接下来即使数据库发生故障也不应该对其有任何影响.

 

隔离级别:

四种隔离级别分别从低到高为:

Read uncommitted:读未提交:什么都不能保证

Read committed:读已提交:可避免脏读

Repeatable read:可重复读:可避免脏读和不可重复读

serializable:串行化:可避免脏读和不可重复读和幻读

 

事务不考虑隔离性可能会引发的问题:

  如果事务不考虑隔离性,可能会引发如下问题:

脏读:一个事务读取了另一个事务还没提交的数据;

不可重复读:一个事务多次读取了表中的同一条数据,读取结果不一样;

虚读(幻读):一个事务读取了另一个事务插入的数据,导致前后读取结果不一样。

 

 

 

简单的说:哈希索引就是采用一定的哈希算法,将键值换算成新的哈希值,检索的时候就不用跟B+树一样,从跟节点到叶子节点逐级查找,只需要一次哈希算法就能定位到对应的数据,速度非常快。

B+树适合大多数场景,例如:范围查询,排序,分组

哈希索引适合主要以等值查询为主,没有范围查询,没有排序的时候。

 

 

 

 

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/558934.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java8 函数式对齐约定————Eclipse自定义代码风格

引言 Java8 的函数式代码风格在Stream的使用上尤为突出。尽管我们可以通过连续调用函数完成一系列操作,但是其可读性并不能保证,还需要有与之相辅的Code Style。例如,请尝试阅读下面两段完全相同的代码: 未遵守约定格式&#xf…

Java核心篇之JVM--day3

Java核心篇之JVM--day3 Java JVM详解--通俗易懂教程 JVM:Java虚拟机的简称。 谈到JVM,通常会聊到三个问题: 1. 什么时候触发Java GC? 2. 对什么东西进行Java GC? 3. 如何进行Java GC? 首先解决第…

使用springboot来实现WebLog

使用websocket技术实时输出系统日志到浏览器端,实现WebLog boot-websocket-log: spring boot系统中使用websocket技术实时输出系统日志到浏览器端,因为是实时输出,所有第一时间就想到了使用webSocket,而且在spring boot中&#…

设计模式---观察者模式介绍与理解

设计模式---观察者模式介绍与理解: 观察者模式原理:类似于定牛奶业务 1. 奶站,subject:登记注册,移除,通知(register,remove,notify) 2. 用户,…

CRS-4995: The command ‘start resource’ is invalid in crsctl.

ntp时间调整后,节点1,advm 和acfs offline 处理办法: /u01/app/12.2.0.1/grid/bin/crsctl stop crs /u01/app/12.2.0.1/grid/bin/crsctl start crs 曾经尝试如下命令不起作用 /u01/app/12.2.0.1/grid/bin/acfsload start /u01/app/12.2…

抽象工厂模式升级版————泛型化实现

引言 今天回看之前总结的抽象工厂模式的实现《Java常用设计模式————抽象工厂模式》,聚焦于抽象工厂模式的缺点,试着改进了一下。 回顾一下抽象工厂模式的缺点: 在添加新的产品类型时,难以扩展抽象工厂来生产新种类的产品。…

发生在“注解”@的那些事儿

注解: 自定义注解: 注解和类,接口一样,属于一种数据类型 注解可以放在类,方法,属性上面 注解可以有属性,也可以没有属性 注解有作用范围 ( 源码期间(String&#…

Java常用设计模式————建造者模式

引言 建造者模式(Builder Pattern)使用多个简单对象一步一步构建成一个复杂的对象。这种类型的设计模式属于建造型模式,它提供了一种创建对象的最佳方式。 一个Builder会一步步构建最终的对象。该Builder类是独立于其他对象的。 实现概要 …

使用动态代理解决网站字符集编码问题:(之前通过拦截器)

使用动态代理解决网站字符集编码问题:(之前通过拦截器) 设计模式: 在软件开发的过程中,遇到相识的问题,将问题的解决方式抽象为模型(套路) 单例模式(静态代码只会执行一…

设计模式---简单工厂设计模式

先定义一个抽象类Animal: 定义两个动物类继承这个类: 定义一个专门生产动物的工程类: 最后定义一个测试类: 按照这个动物工厂类,你会发现,如果动物一多的话,就需要写很多重复的方法,…

Java 多线程 —— ThreadLocal

一、引言 ThreadLocal是Java帮助实现线程封闭性的典型手段。 作用:提供线程内的局部变量,这种变量在线程的生命周期内起作用,减少同一个线程内多个函数或组件之间一些公共变量的传递复杂度。同时也用来维护线程中的变量不被其他线程干扰。 …

设计模式---适配器设计模式

设计模式---适配器设计模式 什么事适配器: 1. 在使用监听的时候,需要定义一个类事件监听器接口 2. 通常接口中有多个方法,而程序中不一定所有的方法都用到,但又必须重写,很繁琐 3. 适配器简化了这些操作&#xff0c…

Java并发编程实战————售票问题

引言 现有一个需求如下: 有10000张火车票,每张票都有一个编号,同时有10个窗口对外售票,如何确保车票的正常售卖? 程序一:使用List 问题的解决办法都是从我们最最熟悉的角度思考。程序一,我们…

多线程相关知识

多线程相关知识 两个线程进行通信:通过等待(wait)唤醒(notify)机制 三个或三个以上线程进行通信:通过notifyAll()方法 /* * 1. 在同步代码块中,用哪个对象锁&#xff0c…

Eclipse集成PyDev5.2.0开发插件

引言 在进行Python学习的时候,希望不使用IDLE进行开发,但是其他的IDE如PyCharm可能需要一段短暂时间的上手,因为开发过Java,所以使用能够集成到Eclipse上的PyDev插件进行开发应该会好一些。 但是在安装PyDev的时候发生了一些问题…

PostMan 四种常见的 POST 提交数据方式

HTTP/1.1 协议规定的 HTTP 请求方法有 OPTIONS、GET、HEAD、POST、PUT、DELETE、TRACE、CONNECT 这几种。其中 POST 一般用来向服务端提交数据,本文主要讨论 POST 提交数据的几种方式。 协议规定 POST 提交的数据必须放在消息主体(entity-body&#xff0…

史上最真实行业鄙视链

本文转载自菜鸟教程的微信公众号,原文链接:https://mp.weixin.qq.com/s/d9cdtq8y4Msq-_ZNof-iuw 引言 作为程序员的一份子,掌握好各个生态系统中的鄙视链,可以写出更加符合改变世界要求的代码。掌握了鄙视链,就掌握了…

权限验证框架Shiro

权限验证框架Shiro: Shiro简介 什么是Shiro: shiro是一个强大易用的Java安全框架,提供了认证,授权,加密,回话管理等功能; 认证(Authentication):用户身份识别…

Mybatis从入门到精通上篇

Mybatis从入门到精通上篇: 学习过的持久层框架:DBUtils , Hibernate Mybatis就是类似于hibernate的orm持久层框架。 Mybatis介绍: Mybatis是面向sql的持久层框架,他封装了jdbc访问数据库的过程,我们开发,只…

Eclipse使用————Working Set工作集

引言 经常看到在设置项目的时候,如导入项目,新建项目等看到对话框的下方有一个“add to working set”复选框,为了弄清这个working set,我们就来好好了解一下Eclipse 的working set功能。 Working Set? Eclipse中通…