MySQL
文章平均质量分 82
vector6_
linux c++/java
展开
-
MySQL索引模型
MySQL索引众所周知,为了提高数据查询的效率,索引就相当于数据库表的目录,是数据库开发中重点且常用的工具。本文就对索引相关重要概念进行分析。索引的常见模型索引的出现是为了提高查询效率,但是实现索引的方式却有很多种,因此有索引模型的概念。用于提高读写效率常见、简单的数据结构主要有哈希表、有序数组和搜索树。下面首先对这几种数据结构进行分析。哈希表哈希表是一种以键 - 值(key-value)存储数据的结构,我们只要输入待查找的键(即 key),就可以找到其对应的值即 Value。哈希的思路很简原创 2021-04-21 00:15:38 · 118 阅读 · 0 评论 -
怎么减少行锁对性能的影响
怎么减少行锁对性能的影响MySQL 的行锁是在引擎层由各个引擎自己实现的。但并不是所有的引擎都支持行锁,比如 MyISAM 引擎就不支持行锁。不支持行锁意味着并发控制只能使用表锁,对于这种引擎的表,同一张表上任何时刻只能有一个更新在执行,这就会影响到业务并发度。InnoDB是支持行锁的,这也是 MyISAM 被 InnoDB 替代的重要原因之一。本文主要讨论数据库中一些容易导致程序出现非预期行为,两阶段锁示例这个问题的结论取决于事务 A 在执行完两条 update 语句后,持有哪些锁,以及在什么原创 2021-04-05 23:58:19 · 72 阅读 · 0 评论 -
MySQL锁机制
MySQL锁机制为了保证数据并发访问时的一致性和有效性,任何一个数据库都存在锁机制。锁机制的优劣直接影响到数据库的并发处理能力和系统性能,所以锁机制也就成为了各种数据库的核心技术之一。如何保证数据并发访问的一致性、有效性是所有数据库必须解决的一个问题,锁冲突也是影响数据库并发访问性能的一个重要因素。从这个角度来说,锁对数据库显得尤其重要,也更加复杂。锁分类按锁级别分类,可分为共享锁、排他锁和意向锁。也可以按锁粒度分类,可分为行级锁、表级锁和页级锁。下面我们先介绍共享锁、排他锁和意向锁。1.共享锁原创 2021-04-05 23:54:59 · 79 阅读 · 0 评论 -
怎么提升索引的使用效率,设计出更高效的索引
怎么提升索引的使用效率,设计出更高效的索引索引的设计可以遵循一些已有的原则,创建索引的时候应尽量考虑符合这些原则,便于提升索引的使用效率,更高效的使用索引。1. 选择唯一性索引唯一性索引的值是唯一的,可以更快速的通过该索引来确定某条记录。例如,学生表中学号是具有唯一性的字段。为该字段建立唯一性索引可以很快的确定某个学生的信息。如果使用姓名的话,可能存在同名现象,从而降低查询速度。2. 为经常需要排序、分组和联合操作的字段建立索引经常需要 ORDER BY、GROUP BY、DISTINCT 和 U原创 2021-04-05 23:54:13 · 1848 阅读 · 0 评论 -
MySQL设置事务自动提交(开启和关闭)
MySQL设置事务自动提交(开启和关闭)设置事务自动提交模式。MySQL 默认开启事务自动提交模式,即除非显式的开启事务(BEGIN 或 START TRANSACTION),否则每条 SOL 语句都会被当做一个单独的事务自动执行。但有些情况下,我们需要关闭事务自动提交来保证数据的一致性。下面主要介绍如何设置事务自动提交模式。在 MySQL 中,可以通过 SHOW VARIABLES 语句查看当前事务自动提交模式,如下所示:mysql> SHOW VARIABLES LIKE 'autoco原创 2021-04-05 23:52:54 · 3865 阅读 · 0 评论 -
MySQL执行事务的语法和流程
MySQL执行事务的语法和流程执行事务的语法和流程SQL 使用下列语句来管理事务。1) 开始事务BEGIN;或START TRANSACTION;2) 提交事务MySQL 使用下面的语句来提交事务:COMMIT;COMMIT 表示提交事务,即提交事务的所有操作,具体地说,就是将事务中所有对数据库的更新都写到磁盘上的物理数据库中,事务正常结束。提交事务,意味着将事务开始以来所执行的所有数据都修改成为数据库的永久部分,因此也标志着一个事务的结束。一旦执行了该命令,将不能回滚事原创 2021-04-05 23:51:30 · 212 阅读 · 0 评论 -
数据库事务的概念和特性
数据库事务的概念和特性数据库的事务(Transaction)是一种机制、一个操作序列,包含了一组数据库操作命令。事务把所有的命令作为一个整体一起向系统提交或撤销操作请求,即这一组数据库命令要么都执行,要么都不执行,因此事务是一个不可分割的工作逻辑单元。在数据库系统上执行并发操作时,事务是作为最小的控制单元来使用的,特别适用于多用户同时操作的数据库系统。例如,航空公司的订票系统、银行、保险公司以及证券交易系统等。事务具有 4 个特性,即原子性(Atomicity)、一致性(Consistency)、隔离原创 2021-04-05 23:50:59 · 142 阅读 · 0 评论 -
数据库设计的三大范式
数据库设计的三大范式1)第一范式第一范式(1NF)用来确保每列的原子性,要求每列(或者每个属性值)都是不可再分的最小数据单元(也称为最小的原子单元)。例如,客人住宿信息表 (姓名, 客人编号, 地址, 客房号, 客房描述, 客房类型, 客房状态, 床位数, 入住人数, 价格)。其中,“地址”列还可以细分为国家、省、市、区等,甚至有的程序还把“姓名”列也拆分为“姓”和“名”等。如果业务需求中不需要拆分“地址”和“姓名”列,则该数据表符合第一范式,如果需要将“地址”列拆分,则下列写法符合第一范式:客人原创 2021-04-05 23:49:56 · 294 阅读 · 0 评论 -
MySQL数据类型的选择
MySQL数据类型的选择MySQL 提供了大量的数据类型,为了优化存储和提高数据库性能,在任何情况下都应该使用最精确的数据类型。前面主要对 MySQL 中的数据类型及其基本特性进行了描述,包括它们能够存放的值的类型和占用空间等。本文主要讨论创建数据库表时如何选择数据类型。可以说字符串类型是通用的数据类型,任何内容都可以保存在字符串中,数字和日期都可以表示成字符串形式。但是也不能把所有的列都定义为字符串类型。对于数值类型,如果把它们设置为字符串类型的,会使用很多的空间。并且在这种情况下使用数值类型列来原创 2021-04-05 23:49:10 · 120 阅读 · 0 评论 -
MySQL系统变量(查看和修改)
MySQL系统变量(查看和修改)在 MySQL 数据库,变量分为系统变量和用户自定义变量。系统变量以 @@ 开头,用户自定义变量以 @ 开头。服务器维护着两种系统变量,即全局变量(GLOBAL VARIABLES)和会话变量(SESSION VARIABLES)。全局变量影响 MySQL 服务的整体运行方式,会话变量影响具体客户端连接的操作。每一个客户端成功连接服务器后,都会产生与之对应的会话。会话期间,MySQL 服务实例会在服务器内存中生成与该会话对应的会话变量,这些会话变量的初始值是全局变量值的原创 2021-04-05 23:47:54 · 287 阅读 · 0 评论 -
MySQL错误代码和消息
MySQL错误代码和消息MySQL 出错时反馈的代码代表出错的原因,我们只有明白这些代码代表的意思,才能了解 MySQL 数据库的错误,找出原因,解决问题。下面介绍 MySQL 服务器和客户端中的错误代码、提示消息的生成方式和查看方法,最后还对 MySQL 中常见的错误代码做了详细说明。####MySQL服务器端错误代码和消息MySQL 是根据安装目录下 share 中的 errmsg.txt 文件来生成 include 下 mysqld_error.h 和 mysqld_ername.h 中的错误定原创 2021-04-05 23:47:19 · 232 阅读 · 0 评论 -
MySql 整体结构
MySql 整体结构MySQL 由连接池、SQL 接口、解析器、优化器、缓存、存储引擎等组成,可以分为三层,即 MySQL Server 层、存储引擎层和文件系统层。MySQL Server 层又包括连接层和 SQL 层。如下是官方文档中 MySQL 的基础架构图:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EJc381Ie-1616768464266)(C:\Users\cfs\Desktop\mysql.png)]上图中,Connection pool 为连接层原创 2021-04-05 23:46:25 · 1809 阅读 · 6 评论