MySQL
文章平均质量分 73
MySQL是一种开放源代码的关系型数据库管理系统(RDBMS),使用最常用的数据库管理语言--结构化查询语言(SQL)进行数据库管理。
Keson Z
生活本是泥潭,不想跌底就请保持步伐
展开
-
MySQL优化——Explain分析执行计划详解
在应用的的开发过程中,由于初期数据量小,开发人员写 SQL 语句时更重视功能上的实现,但是当应用系统正式上线后,随着生产数据量的急剧增长,很多 SQL 语句开始逐渐显露出性能问题,对生产的影响也越来越大,此时这些有问题的 SQL 语句就成为整个系统性能的瓶颈,因此我们必须要对它们进行优化,本章将详细介绍在 MySQL中优化 SQL 语句的方法。当面对一个有 SQL 性能问题的数据库时,我们应该从何处入手来进行系统的分析,使得能够尽快定位问题 SQL 并尽快解决问题。原创 2023-03-27 19:30:53 · 2453 阅读 · 4 评论 -
数据库事务与锁详解
事务是指作为单个逻辑工作单元执行的一系列操作,要么完全地执行,要么完全地不执行。事务处理可以确保除非事务性单元内的所有操作都成功完成,否则不会永久更新面向数据的资源。通过将一组相关操作组合为一个要么全部成功要么全部失败的单元,可以简化错误恢复并使应用程序更加可靠。一个逻辑工作单元要成为事务,必须满足所谓的ACID(原子性一致性隔离性和持久性)属性。事务是数据库运行中的一个逻辑工作单位,由DBMS中的事务管理子系统负责事务的处理。转载 2023-03-08 19:54:47 · 1035 阅读 · 0 评论 -
为什么 B+ 树比 B 树更适合应用于数据库索引?
加索引是数据库加速查询的一种方式,那么为什么用索引可以加快查询呢?讲到索引,其实我们经常会听到一个图书馆的例子,图书馆里的书目繁杂,我们如何从若干本书里面找到一本我们想要的书呢?我们根据图书馆系统检索,可以找到某本书对应的图书编号。在基于书籍按照一定规则排列的前提下,我们可以根据图书编号找到这本书。例如,假设图书编号根据:第几个书架 - 书架上第几个格子 - 从左到右数第几个位置这样的规则编排,我们就可以轻松的获取到我们想要的书籍。按照一定的规则排列有序。转载 2023-03-07 20:13:42 · 410 阅读 · 0 评论 -
数据库三大范式(图文详解)
范式是数据库设计时遵循的一种规范,不同的规范要求遵循不同的范式。转载 2023-03-07 19:46:38 · 15628 阅读 · 10 评论 -
MySQL高级篇——索引
索引1 索引概述MySQL官方对索引的定义为:索引(index)是帮助MySQL高效获取数据的数据结构(有序)。在数据之外,数据库系统还维护者满足特定查找算法的数据结构,这些数据结构以某种方式引用(指向)数据,这样就可以在这些数据结构上实现高级查找算法,这种数据结构就是索引。如下面的示意图所示 :左边是数据表,一共有两列七条记录,最左边的是数据记录的物理地址(注意逻辑上相邻的记录在磁盘上也并不是一定物理相邻的)。为了加快Col2的查找,可以维护一个右边所示的二叉查找树,每个节点分别包含索引键值和一个原创 2021-03-11 09:48:41 · 248 阅读 · 0 评论 -
mysql服务崩了之后,使用mysql数据库存储文件夹data恢复数据库数据
前言:本篇博客主要说明当mysql服务挂了之后,如何使用mysql数据存储文件夹恢复数据库。1.首先拿到mysql数据库存储的数据,示例如下:2.拿到恢复到mysql的存储位置:#输入mysql命令:show global variables like "%datadir%";3.打开数据库存储文件夹:4.我们选择需要恢复的数据库文件夹,在这里我们选择恢复“db_”开头的数据库:5.打开任务管理器,将mysql服务停止:6.将“db_”开头的文件夹以及ibdata1文件拷贝到原创 2021-02-05 16:05:28 · 803 阅读 · 0 评论 -
解决数据库中某张数据表打不开操作不了,出现Lock wait timeout exceeded; try restarting transaction的问题
1 问题mysql数据库修改某条记录的时候出现报错:org.springframework.dao.CannotAcquireLockException:Error updating database. Cause: java.sql.SQLException: Lock wait timeout exceeded; try restarting transaction2 原因在高并发的情况下,Spring事物造成mysql数据库事务未提交产生死锁,后续操作超时抛出异常。mysql数据库采用I转载 2021-01-30 09:23:48 · 423 阅读 · 0 评论 -
SQL中count(1)、count(*)与count(列名)的执行效率区别
执行效果上:count(*)包括了所有的列,相当于行数,在统计结果的时候,不会忽略列值为NULL count(1)包括了忽略所有列,用1代表代码行,在统计结果的时候,不会忽略列值为NULL count(列名)只包括列名那一列,在统计结果的时候,会忽略列值为空(这里的空不是只空字符串或者0,而是表示null)的计数,即某个字段值为NULL时,不统计。执行效率上:列名为主键,count(列名)会比count(1)快 列名不为主键,count(1)会比count(列名)快 如果表多个列并转载 2021-01-15 11:47:58 · 323 阅读 · 0 评论