数据库
文章平均质量分 84
mysql
HCH996
一边失去,一边在寻找~
展开
-
MySQL 的优化方案有哪些?
性能优化(Optimize)指的是在保证系统正确性的前提下,能够更快速响应请求的一种手段。 而且有些性能问题,比如慢查询等,如果积累到一定的程度或者是遇到急速上升的并发请求之后,会导致严重的后果,轻则造成服务繁忙,重则导致应用不可用。它对我们来说就像一颗即将被引爆的定时炸弹一样,时刻威胁着我们。 因此在上线项目之前需要严格的把关,以确保 MySQL 能够以最优的状态进行运行。 同时,在实际工作中还有面试中关于 MySQL 优化的知识点,都是面试官考察的重点内容。典型回答MySQL 数据库常见的优化原创 2021-01-18 11:59:42 · 152 阅读 · 0 评论 -
char和varchar的区别
字符与字节的区别字符和字节的对应关系是不同的。一般来说,半角英文状态下一个字母或数字(称之为字符)占用一个字节,一个汉字用两个字节表示。在不同的编码方式下一个字符占的字节数是不同的,所以两者是不能划等号的。 1个字节(Byte)等于8个bit位,每个bit位是0/1两种状态,也就是说一个字节可以表示256个状态,计算机里用字节来作为最基本的存储单位。 字符,在计算机和电信技术中,一个字符是一个单位的字形、类字形单位或符号的基本信息。 字符是指计算机中使用的字母、数字、字原创 2021-01-04 12:33:54 · 555 阅读 · 0 评论 -
MySQL索引系统
数据库最终都要落地至磁盘,查找数据,都需要从磁盘的文件中读取数据加载至内存再获取。关键值: key 文件名称: 偏移量使用一定的数据结构来设计索引。B+树(为什么??)除了B+树以外,还有其他可以用来设计索引的数据结构么? hash索引一、存储引擎不同的文件在磁盘上的组织形式。不同的存储引擎,数据的组织形式是不同的。(1)不同存储引擎索引对应的数据结构InnoDB(B+树) MyISAM(B+树) MEMORY(hash索引)InnoDB支持hash索引么InnoDB原创 2020-12-13 22:26:02 · 450 阅读 · 0 评论 -
MySQL如何实现主从备份和分离读写
主数据库服务器故障后,可切换到从数据库继续工作,避免数据丢失主从备份原理数据库有一个bin-log二进制文件,纪录了所有执行的sql语句,尤其是一些DML语句。 目标就是把主数据库(Master)的bin-log文件sql语句复制到从数据库(Slave)上 把bin-log中的数据读取到reply-log文件中,在从数据库(Slave)的reply-log重做日志文件中,重新执行一次这些sql语句。主从备份过程:共涉及到了三个线程 1. master的binlog输出线程将执行的s...原创 2020-10-22 17:01:21 · 224 阅读 · 0 评论 -
如何进行数据库的优化
优化的目的找出系统的瓶颈,提高MySQL数据库的整体性能 优化结构设计和参数调整,提高用户的响应速度,同时还要节约系统资源,让系统满足更高的负荷。软优化:一般是操作数据库即可在MySQL中尽量使用JOIN来代替子查询,因为子查询需要嵌套查询 嵌套查询时会建立一张临时表,临时表的建立和删除都会有较大的系统开销,而连接查询不会创建临时表,因此效率比嵌套子查询高 从索引 角度出发 like关键字匹配’%’开头的字符串,不会使用索引 or关键字用到的两个字段必须都是用了索引,该查询才会使用索引.原创 2020-10-22 16:36:41 · 182 阅读 · 0 评论 -
数据库连接池
池技术目的是为了优化服务器应用程序性能、提高执行效率、降低系统资源开销这里所说的池是一种广义上的池,比如数据库连接池、线程池、内存池和对象池等数据库连接数据库连接的创建是一个很耗时的操作 对于web应用,高并发很常见,在这种情况下,频繁的进行数据库连接操作势必占用很多的系统资源,网站的响应速度必定下降,严重的甚至会造成服务器的崩溃 对于每一次数据库连接,使用完后都得断开。否则,如果程序出现异常而未能关闭,将会导致数据库系统中的内存泄露,最终将不得不重启数据库。 需要控制能够原创 2020-10-22 16:09:19 · 57 阅读 · 0 评论 -
MySQL中的慢查询
实际开发中,最直接性能指标就是SQL执行速度慢查询顾名思义,就是执行很慢的查询 如果定义慢?超过long_query_time参数设定的时间阈值(默认10s),就被认定是慢查询的, 是需要优化的。慢查询日志慢查询日志默认是不开启的如果需要优化SQL语句,可以开启这个功能,很容易知道哪些语句是需要优化的Query_time:实际执行的时间,Lock_time:如果加了锁的话,等到锁所消耗的时间,Row_sent:拿到了多少条数据, Rows_examined:为了得到想要的结果操作原创 2020-10-22 16:05:00 · 321 阅读 · 0 评论 -
Mysql数据库锁
目录 从锁的操作粒度划分 行锁 表锁 页锁(基于表锁和行锁之间) MyISAM和innoDB 从锁的实现方式划分 乐观锁:(只需要添加一个字段,而且由程序猿自己去控制) 悲观锁 (1)共享锁 (2)排他锁 当多个事务并发访问,对同一个数据进行操作 数据库锁是一个非常重要的技术,主要实现对数据库的并发控制从锁的操作粒度划分行锁粒度最小;锁定资源导致的争用概率最小,给予尽可能大的并发处理能力;为了满足小的粒度资源锁定,每次获取和释放需要带来更多的消..原创 2020-10-22 15:12:54 · 217 阅读 · 0 评论 -
MySQL事务
MySQL事务的特性(ACID)原子性 A事务包含的所有操作要么全部成功,要不全部失败回滚 因此事务的操作如果成功就必须要完全应用到数据库,如果操作失败则不能对数据库有任何影响。一致性 C事务必须使用数据库,从一个一致性状态变换到另一个一致性状态 拿转账来说,假设用户A和用户B两者的钱加起来一共时5000,那么不管是A和B之间如何转账,转几次帐,事务结束后两个用户的钱相加起来应该还得是5000,这就是事务的一致性。隔离性 I当多个用户并发访问数据库时,比如操作同一张表时,多个并发事务原创 2020-10-22 14:27:56 · 67 阅读 · 0 评论 -
索引的是使用规则
单例索引SELECT uid FROM people WHERE name = ‘xuwuji’ AND gender = ‘M’对name列建立索引,这样就把范围限制在name=‘xuwuji’的结果集上 之后再对这个结果集进行扫描 寻找满足gender = ‘M’得到最终结果 在MySQL中执行查询时,只能使用一个索引 如果我们在name, gender上分别建立索引。执行查询时,MySQL会自动选择一个最严格,也就是获得结果集纪录数最少的索引。(姓名重名的一定比性别重复的少)联合索引原创 2020-10-22 14:02:56 · 180 阅读 · 0 评论 -
聚簇索引和非聚簇索引
从文件存储的角度进行划分聚簇索引: 将数据存储与索引放到了一块,找到索引也就找到了数据 非聚簇索引:将数据与索引进行分开存储聚簇索引1. 一个仅有一个)一个聚簇索引,默认是主键 2.聚簇索引性能最好而且具有唯一性(一个聚簇索引就相当于是包含了所有的数据,如果建立多个,会导致重复存储多份数据,内存消耗大)所以非常珍贵,必须慎重设置。一般要根据这个表最常用的SQL查询方式来进行选择,某个字段作为聚簇索引,或组合聚簇索引,这个要看实际情况二级索引(存储索引)innoDB所独有的方式1.聚簇索.原创 2020-10-22 13:49:53 · 460 阅读 · 0 评论 -
索引的底层数据结构是什么?为什么这么设计?
MySQL通过B+树来实现索引。B+树1.n叉树,每一级可以存储多个节点,降低了树的高度 2.非叶子节点只存储key,不存储数据 叶子节点存储key和数据 叶子节点的内部,存在多条数据,根据索引进行了有序排列,满足了范围查找 叶子节点之间通过一个双向链表,进行相互连接 索引失效的情况下,可以按照叶子节点进行顺序遍历 B+Tree每次建立一个节点的同时,直接申请一个页的空间,将一个节点的大小设为等于一个页 这样每个节点只需要一次I/O就可以完全载入。索引索引查找过程中,产生磁盘原创 2020-10-22 10:48:45 · 955 阅读 · 0 评论 -
什么是索引?MySQL有哪几种索引?
索引的作用1.索引用于快速找出在某行数据,如果不使用索引,MySQL必须从第一条记录开始读完整个表,直到找出相关的行 2.表越大,查询数据所花费的时间就越多,通过索引MySQL能够快速到达一个位置去搜索数据文件,节省很大一部分时间mySql的索引1.MySQL可以给任意字段设置索引 2.创建索引和维护索引要耗费时间,并且随着数据量的增加所耗费的时间也会增加,当对表中的数据进行增加、删除、修改时,索引也需要动态的维护,降低了数据的维护速度 3.占用一定的空间,我们知道数据表中的数据也会有最大上原创 2020-10-22 10:20:29 · 141 阅读 · 0 评论 -
MySQL的MyISAM和InnoDB两种存储引擎的区别
1. MyISAM是MySQL5.5版本以前默认的数据库引擎2.Innodb弥补了MyISAM的一些不足,在5.5版本后成为默认数据库引擎,逐渐取代了MyISAMMyISAM1.MyISAM强调性能,每次查询具有原子性不提供事务支持 2.只支持表级锁,select,update,delete,insert语句都会给表自动加锁。MyISAM在同一个表上的读锁和写锁是互斥的,如果既有读请求又有写请求,即使读请求先到,写请求优先级也会更高 3.所以MyISAM不适合于有大量查询和修改并存的情况,那原创 2020-10-22 09:34:54 · 189 阅读 · 0 评论 -
Mysql练习题二
有三个表s(学生表), C(课程表) , SC(学生选课表)S(SNO, SNAME)代表 (学号,姓名) C(CNO, CNAME, CTEACHER) 代表(课号, 课名, 教师) SC(SNO, CNO, SCGRADE) 代表(学号, 课号, 成绩)create table s( sno int(4) primary key auto_increment, sname varchar(32));crate table c( con int(4) primar原创 2020-10-20 11:15:53 · 1986 阅读 · 0 评论 -
MySQL练习一
目录1. 第二高的新水2. 超过经理收入的员工3. 查找重复的电子邮箱4. 从不订购的客户5.上升的温度6.求平均薪水的等级最低的部门的部门名称7.取得比普通员工(员工代码没有在mgr上出现的)的最高薪水还要高的经理人姓名8.取得薪水最高的前5名员工9.取得薪水最高的第六到第十名员工10. 取得最后入职的5名员工11.取得每个薪水等级有多少员工表字段dept(dno, dname, sal) emp(eno, ename, job) sal(eno,.原创 2020-10-20 11:02:25 · 230 阅读 · 0 评论 -
JAVA开发面试_Mysql篇
事务4大特性?这4个特性mysql如何保证实现的?事务4大特性:原子性、一致性、隔离性、持久性 原⼦性: 事务是最⼩的执⾏单位,不允许分割。事务的原⼦性确保动作要么全部完成,要么全不执行 一致性: 执⾏事务前后,数据保持⼀致,多个事务对同⼀个数据读取的结果是相同的; 隔离性: 并发访问数据库时,⼀个⽤户的事务不被其他事务所⼲扰,各并发事务之间数据库是独⽴的; 持久性: ⼀个事务被提交之后。它对数据库中数据的改变是持久的,即使数据库发⽣故障也不应该对其有任何影响。实现保证(bi原创 2020-10-17 12:15:59 · 229 阅读 · 1 评论 -
关系型数据和文档型数据库有什么区别?
目录关系数据库ACID特性关系数据库的三范式非关系型数据库 VS 文档型数据库1. 文档型数据库2. 键值型数据库3. 全文搜索型数据库MongoDB 事务关系数据库关系数据库(Relational Database)是建立在关系模型基础上的数据库,借助于几何代数等数学概念和方法来处理数据库中的数据。所谓关系模型是一对一、一对多或者多对多等关系,常见的关系型数据库有 Oracle、SQL Server、DB2、MySQL 等。而文档型数据库是一种非关系型数据.原创 2020-10-02 11:45:48 · 2361 阅读 · 0 评论 -
MySQL的运行机制是什么?它有哪些引擎?
目录整个 SQL 的执行流程1.查询缓存的利弊2.如何选择数据库引3.InnoDB 自增主键整个 SQL 的执行流程首先客户端端先要发送用户信息去服务端进行授权认证。如果使用的是命令行工具,通常需要输入如下信息:mysql -h 主机名(IP) -u 用户名 -P 端口 -p其中:-h 表示要连接的数据库服务器的主机名或者 IP 信息; -u 表示数据库的用户名称; -P 表示数据库服务器的端口号, 小写的 -p 表示需要输入数据库的密码。当输入正确密码之后.原创 2020-10-02 10:42:11 · 134 阅读 · 0 评论 -
Mysql_索引_B树与B+树
为什么索引可以减少IO次数和减少IO量,提高并发效率?key值 哪个文件 offset偏移量 索引需要落盘,不然每次都需要重建索引当索引文件足够大的时候会产生更多的IO索引应该是使用key-value的格式存储,候选的保存key-value的有,hash表,二叉树,平衡二叉树,红黑树,B树,B+树,先来看看各种情况。(1)如果用hash存储索引。必须设计好的hash算法;不能使用范围查询,需要挨个比较;浪费空间;(2)如果使用二叉树,当插入的数据比较有序,二叉树退化成..原创 2020-09-21 22:02:42 · 157 阅读 · 0 评论 -
Mysql中in, exists与or的区别
假设表A中,字段 name的值可能为"x", "y", "z",要找出A表中name为y", "z"的记录,有两种方式or写法:select * from A where name = "y" or name = "z" in写法: select * from A where name in("y", "z")or与in的比较如果name有索引的话,二者执行效率几乎相同 否则,随着or的增多,执行效率下降得越厉害。in和exists方式假设表B中,字段 name的值可能为"w", "y"原创 2020-09-19 21:57:31 · 1952 阅读 · 0 评论 -
Mysql常见面试题
mysql配置文件二进制文件-log-bin:主从复制 错误日志-log-error:默认关闭,记录警告和错误,启动和关闭详情 查询日志-log:默认关闭,记录查询的sql,开启会降低整体性能 数据文件:/var/lib/mysql frm:存放表结构 myd:存放数据表 myi:存放索引 mysql逻辑架构:连接层(JDBC)、服务层(优化一些查询的语句)、引擎层(myIsam, innoDB)、存储层存储引擎myIsam:不支持主外键、不支持事务、表锁、只缓存索引 innoDB:支.原创 2020-09-19 21:40:43 · 66 阅读 · 0 评论