MySQL数据库知识点总结
数据库:
- 数据库索引的好处:索引是对数据库表中的一个或多个列的值进行排序的结构,这样检索或者查询某条记录的时候就不在是顺序查找,而是使用特定的查找方式进行查找,如通过二分查找或者是hash值来查找,提高查询效率。
- Mysql如何查看执行计划:可以通过explain命令来帮助我们分析sql语句的执行情况,来了解sql如何使用索引,连接查询的执行顺序,查询的数据行数。只需要在查询select关键字之前增加explain这个词即可。
- possible_keys指出mysql能使用哪些索引来优化查询,查询上所涉及的索引都会被列出,但不一定会使用;
- Key查询优化器查询实际使用的索引,如果没有,显示null
- Table 输出数据行所在的表名
- Id是一位数字,表示执行select语句的顺序,id相同执行顺序从上到下,越大先执行。
- Select_type显示对应行是简单还是复杂。不包含子查询或者union(simple)包含子查询:primary
- Mysql执行计划的顺序:id相同从上往下执行,id不同,大的先执行。
- 如何查看mysql中sql执行的快慢:通过profiling命令来查看sql的执行时间。
- 首先先检查profiling的状态(select @@profiling 0代表关闭着分析功能,把他设置为1 set profiling=1,再次查看select @@profiling,这个时候已经是1了)
- 查看sql语句的执行时间(show profiles);
- 查看sql执行耗时的详细信息。Show profile query queryID;
- 使用什么数据库连接池?连接池的工作原理?常用连接池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+树适合大多数场景,例如:范围查询,排序,分组
哈希索引适合主要以等值查询为主,没有范围查询,没有排序的时候。
MySQL数据库知识点总结相关推荐
- MySQL/数据库 知识点总结
书籍推荐 <SQL基础教程(第2版)> (入门级) <高性能MySQL : 第3版> (进阶) 文字教程推荐 SQL Tutorial (SQL语句学习,英文).SQL Tut ...
- mysql数据库知识点梳理_MySQL数据库知识点整理 (持续更新中)
一.修改用户密码 格式(在命令行下输入):mysqladmin -u 用户名 -p旧密码 password 新密码 1. 给root添加密码ab12: mysqladmin -uroot -pass ...
- Mysql数据库知识点归纳汇总
文章目录 数据库范式 第一范式(1NF) 第二范式(2NF) 第三范式(3NF) 巴斯-科德范式(BCNF) 第四范式(4NF) 第五范式(5NF) 连接方式 内连接(INNER JOIN) 左连接( ...
- MySql 数据库 知识点
数据库概念 1.什么是数据库?什么是数据库管理系统?什么是 SQL?它们之间的关系是什么? 数据库:英文单词 DataBase ,j简称DB,按照一定格式存储数据的一些文件的集合. 顾名思义:存储数据 ...
- 【mysql篇】mysql数据库知识点(四种语言)
mysql数据库语言分为四种DDL,DQL,DML,DCL下面我们一一介绍: 注:(上图取自黑马程序员的课程APP中,这些笔记也是看了黑马程序员的课程之后做的): 一, DDL(data ...
- MySQL数据库知识点总结(基本篇)
目录 MySQL数据库和SQL语句(重点) 1.数据库的简介 2.MySQL数据库的安装和卸载 3.MySQL数据库概念 4.SQL语言(操作数据库) 5.SQL语言分类 1.数据库的操作(CURD) ...
- mysql数据库知识点总结_mysql数据库知识点总结
一.数据库的基本操作 --------------------------------------------------------------数据库的安装以后更新----------------- ...
- MySQL数据库知识点
基本概念 数据库管理系统(DBMS):用于数据的存储. 检索.管理和处理的数据库软件 数据库(database):保存有组织的数据的容器(通常是一个文件或一组文件).区分于DBMS(数据库管理系统), ...
- MySQL数据库学习笔记,知识点和案例整理,期末三天复习完【简单且详细】
MySQL数据库近三万字学习笔记,超级详细! 文章目录 前言 一.day1 二.day2 三.day3 前言 MySQL数据库知识点和案例总结,非常详细,将近三万字!分成了三天去消化吸收! 一.day ...
最新文章
- Flex与Javascript交互
- 控制 Redis stream 的消息数量
- mysql md5版本校验_MySQL查询以名称的md5版本更新所有条目?
- 浏览器滚动条样式更改
- 案例 员工信息维护系统 c# 1613925570
- Towards Efficient Privacy-Preserving Inspection of TLS Encrypted Traffic
- 淘宝开源Web服务器Tengine简介
- 人脸识别库Dlib介绍
- c语言逻辑运算符用法大全,【学习笔记】【C语言】逻辑运算符
- 美团:落地 Service Mesh 的挑战与实践!
- 芯海科技(深圳)股份有限公司实习生面经
- 蚂蚁金服是不是中国最好的 FinTech(金融科技)公司
- (费用流)洛谷P2469 [SDOI2010]星际竞速
- (转载)BOX2D V2.3.0 用户手册中文版(第8章)-关节
- jquery开发公众号素材管理页面
- web绘图技术之Raphael
- centos7 通过git连接GitHub仓库
- 贪心算法-数列极差问题(对前篇文章的修改)
- android usb采集卡,USB HDMI直播采集卡1805怎么用?
- 区块链劲旅Waves—基于Waves的DeFi应用Neutrino协议
热门文章
- java中为按钮添加图片_如何在Java中为字符串添加双引号?
- Java LineNumberReader getLineNumber()方法及示例
- 如何在使用ASPMVC4的分部视图中获取数据展示
- 公开说说别人看不到_当听到别人在说自己坏话时,心里是什么感受?
- c++11特性move和forward区别
- latex摘要目录页眉缺少一个空格
- python数据批量写入iq数据库_通过Load table命令将数据文件加载到Sybase IQ数据库里面的Python脚本...
- 64位程序怎么判断指针是否有效_AArch64应用程序级编程模型
- http安全 Java_HTTP通信安全-身份验证 | 字痕随行
- python dict保存到文件_将dict写入txt文件并将其读回?