
MySQL
文章平均质量分 88
lingengy
这个作者很懒,什么都没留下…
展开
-
mysql45讲之事务到底是隔离的还是不隔离的?
InnoDB里面每个事务有一个唯一的事务ID,叫作transaction id。它是在事务开始的时候向InnoDB的事务系统申请的,是按申请顺序严格递增的。而每行数据也都是有多个版本的。每次事务更新数据的时候,都会生成一个新的数据版本,并且把transaction id赋值给这个数据版本的事务ID,记为row trx_id。同时,旧的数据版本要保留,并且在新的数据版本中,能够有信息可以直接拿到它。也就是说,数据表中的一行记录,其实可能有多个版本(row),每个版本有自己的row trx_id。在MySQL里转载 2022-07-06 17:47:08 · 210 阅读 · 0 评论 -
mysql45讲之全局锁和表锁和行锁
根据加锁的范围,MySQL里面的锁大致可以分成全局锁、表级锁和行锁三类。MySQL提供了一个加全局读锁的方法,命令是 Flush tables with read lock (FTWRL)。当你需要让整个库处于只读状态的时候,可以使用这个命令,之后其他线程的以下语句会被阻塞:数据更新语句(数据的增删改)、数据定义语句(包括建表、修改表结构等)和更新类事务的提交语句。**全局锁的典型使用场景是,做全库逻辑备份。**也就是把整库每个表都select出来存成文本。官方自带的逻辑备份工具是mysqldump。当my转载 2022-07-06 17:04:06 · 224 阅读 · 0 评论 -
mysql45讲之深入浅出索引
在MySQL中,索引是在存储引擎层实现的,所以并没有统一的索引标准,即不同存储引擎的索引的工作方式并不一样。而即使多个存储引擎支持同一种类型的索引,其底层的实现也可能不同。InnoDB应用最广泛,这里就说说InnoDB的索引模型。聚簇索引保证关键字的值相近的元组存储的物理位置也相同(所以字符串类型不宜建 立聚簇索引,特别是随机字符串,会使得系统进行大量的移动操作),且一个表只能 有一个聚簇索引。因为由存储引擎实现索引,所以,并不是所有的引擎都支持聚簇索 引。目前,只有solidDB和InnoDB支持。在In转载 2022-07-06 16:29:55 · 334 阅读 · 0 评论 -
mysql45讲之事务隔离:为什么你改了我还看不见?
事务的一些基本概念可以从我之前写的这篇文章看:spring事务管理在MySQL中,实际上每条记录在更新的时候都会同时记录一条回滚操作。记录上的最新值,通过回滚操作,都可以得到前一个状态的值。假设一个值从1被按顺序改成了2、3、4,在回滚日志里面就会有类似下面的记录。不同时刻启动的事务会有不同的read-view,同一条记录在系统中可以存在多个版本,就是数据库的多版本并发控制(MVCC)。当某一事务要查看其所在read-view的值时,要从当前值一直回滚到其read-view所在的位置才能得到其事务所在版转载 2022-07-06 16:12:29 · 135 阅读 · 0 评论 -
mysql45讲之日志系统:一条SQL更新语句是如何执行的?
经过上一节我们知道mysql分为server层和存储引擎层。这一节我们要来了解mysql这两个模块的处理日志。最开始MySQL里并没有InnoDB引擎。MySQL自带的引擎是MyISAM,但是MyISAM没有crash-safe的能力,binlog日志只能用于归档。而InnoDB是另一个公司以插件形式引入MySQL的,既然只依靠binlog是没有crash-safe能力的,所以InnoDB使用另外一套日志系统——也就是redo log来实现crash-safe能力。所以InnoDB被mysql官方引入之后就转载 2022-07-06 15:01:14 · 149 阅读 · 0 评论 -
mysql45讲之基础架构:一条SQL查询语句是如何执行的?
Server层包括连接器、查询缓存、分析器、优化器、执行器等,涵盖MySQL的大多数核心服务功能,以及所有的内置函数(如日期、时间、数学和加密函数等),所有跨存储引擎的功能都在这一层实现,比如存储过程、触发器、视图等。而存储引擎层负责数据的存储和提取。校验用户名和密码,校验保留权限,一个用户成功建立连接后,即使你用管理员账号对这个用户的权限做了修改,也不会影响已经存在连接的权限。建立连接的过程通常是比较复杂的,所以我建议你在使用中要尽量减少建立连接的动作,也就是尽量使用长连接。但是全部使用长连接后,你可能会转载 2022-07-06 14:56:10 · 113 阅读 · 0 评论 -
这些年,面试官在MySQL上挖的那些坑
这些年,面试官在MySQL上挖的那些坑1、表设计上的坑1、字段设计 字段类型设计: 尽量使用整型表示字符串: INET_ATON(str),address to number INET_NTOA(number),number to address 定长和非定长数据类型的选择: 1、decimal不会损失精度,存储空间会随数据的增大...原创 2020-11-08 16:34:52 · 247 阅读 · 0 评论 -
MySQL之性能优化
文章目录一、一些概念知识1、各数据库存储引擎a、MyISAM存储引擎b、InnoDB存储引擎c、MEMORY存储引擎d、MERGE存储引擎2、MySQL的两种索引a、B-Tree索引b、hash索引c、索引的相关概念d、存储引擎及文件格式比较e、建索引的目的二、sql的优化1、大批量插入数据2、优化INSERT语句3、查询优化4、不使用索引的情况5、建议不建立索引的情况三、explain执行计划1...原创 2019-10-12 23:20:47 · 450 阅读 · 0 评论 -
彻底解决mysql中文乱码
我把数据库本分到本地之后重装了服务器,再把数据从本地传输到服务器之后就出现数据存入服务器的时候就出现中文乱码的问题(中文变成了问号),这个问题搞了我一天。在我一筹莫展的时候找到了这篇博客,帮了我大忙,必须转载到自己的博客中。 mysql是我们项目中非常常用的数据型数据库。但是因为我们需要在数据库保存中文字符,所以经常遇到数据库乱码情况。下面就来介绍一下如何彻底解决数据库中文乱码情况。1、...转载 2018-03-21 11:38:34 · 610 阅读 · 0 评论 -
MySQL 第九篇:Mysql 与 ORACLE 开发差异、Mysql 优化
Mysql 与 ORACLE 开发差异一、 常用的基本数据类型对比二、 常用 SQL函数以及其它语法差异Mysql 优化一、 数据库设计a) 适当的违反三大范式。 b) 适当建立索引。 c) 对表进行水平划分(按照一个周期对表数据进行拆分)。 d) 对表进行垂直划分(对字段内容较长的字段进行拆分到一个新表)。 e) 选择合适的字段类型。能占用字节小的字段就不要去大字段。 f) 文件、图片等原创 2017-10-30 15:34:05 · 560 阅读 · 0 评论 -
MySQL 第八篇:自定义函数、存储过程、游标
自定义函数一、函数的概念与定义1、理解函数函数可以看作是一个加工作坊,这个加工作坊接收调用者传递过来的原料(传递的参数),然后将这些原料加工处理成产品(函数的返回值)再把产品返回给调用者。2、创建语法(建议自定义函数以fun_前缀)create function 函数名(参数1,参数2....) returns 返回值的数据类型[函数类型]begin函数体return 语句;end;--原创 2017-10-29 16:15:10 · 823 阅读 · 0 评论 -
MySQL 第七篇:数据库设计、视图与触发器
试图一、二、三、原创 2019-10-12 03:01:17 · 2493 阅读 · 2 评论 -
MySQL 第六篇:索引与子查询
一、子查询子查询,从原有的查询语句中 嵌入新的查询 来得到我们想要的结果,也可称为嵌套查询。1、where 型a、查询课程名为“Java”的学生信息-- 使用关联查询实现SELECT s.*FROM students s, class cWHERE s.class_id = c.class_idAND c.class_name = 'JAVA' -- 使用子查原创 2017-10-28 00:47:16 · 5702 阅读 · 2 评论 -
MySQL 第五篇:系统函数和联合查询
一、系统函数一、概念 函数是SQL里的关键字,用于对字段里的数据进行操作。函数是一个命令,通常与字段名称或者是表达式联合使用,处理输入的数据并产生结果二、控制函数1、case语法:case 值 when 比较的值 then 返回的值 when 比较的值 THEN…. ENDSELECT s_name, CASE sexWHEN 0 THEN '女性'WHEN 1 THEN原创 2017-10-27 15:37:54 · 497 阅读 · 0 评论 -
MySQL 第四篇:SQL查询强化使用
一、操作符1、比较操作符相等 =不相等 != or <>小于和大于 < or >比较操作符的组合 <= or >=2、逻辑操作符IS NULL:用于和NULL值进行比较。BETWEEN:定位最大值与最小值之间;语法: 列 BETWEEN 最小值 and 最大值。IN 用于把一个值与一个指定列表进行比较,当被比较的值至少与列表中的一个值相匹配时返回true。LIKE 用于通配符把一个原创 2017-10-26 22:15:42 · 440 阅读 · 0 评论 -
Mysql 第三篇:完整性约束
一、数据完整性的概念1、目的为了防止不符合规范的数据进入数据库,在用户对数据进行插入、修改、删除等操作时,DBMS自动按照一定的约束条件对数据进行监测,使不符合规范的数据不能进入数据库,以确保数据库中存储的数据正确、有效、相容。2、概念约束是用来确保数据的准确性和一致性。数据的完整性就是对数据的准确性和一致性的一种保证。 数据完整性(Data Integrity)是指数据的精确性(Accuracy原创 2017-10-26 19:12:01 · 781 阅读 · 0 评论 -
MySQL 第二篇:增删改查
一、新增数据1、语法:insert [into] <表名>[列名] values<值列表>-- Insert into 表名(列名1,列名2) values(值1,值2,);INSERT INTO students (s_id, s_name) VALUES ('J1604025', 'XZG');注意:如果insert语句中不写字段名,则默认是向表中的所有字段添加值,并且添加值的数量要和表的原创 2017-10-26 16:45:06 · 535 阅读 · 0 评论 -
MySQL 第一篇:数据类型和操作数据库结构
一、数据类型1、数值类型2、字符串类型3、日期和时间类型4、复合类型ENUM格式:ENUM(value1, value2, …)存储大小:1-255个成员:1字节;256-65535个成员:2字节。描述:存储预先定义好的字符串列表,插入和更新必须使用列表中的值,如果插入值不在列表中,则插入空串。可以通过索引引用列表中的值,索引由0开始。ENUM最大成员数为65535。SETSET(valu原创 2017-10-25 21:16:53 · 660 阅读 · 0 评论