mysql
文章平均质量分 70
YuanlongWang
全栈开发工程师,热爱研究新技术,专注于数据研究领域,乐于分享
展开
-
MySQL事务隔离级别详解
序列化读(Serializable):最高级别的隔离。两个同时发生的事务100%隔离,每个事务有自己的『世界』。所有事务按照次序依次执行,因此,脏读、不可重复读、幻读都不会出现。虽然Serializable隔离级别下的事务具有最高的安全性,但是,由于事务是串行执行,所以效率会大大下降,应用程序的性能会急剧降低。如果没有特别重要的情景,一般都不会使用Serializable隔离级别。可重复读(Repeatable read,MySQL默认模式):如果一个事务成功执行并且添加了新数据,这些数据对其他正在执行原创 2023-04-23 00:26:52 · 466 阅读 · 0 评论 -
mysql和redis如何保证数据库一致性
如果对于小公司的单机服务器来说在更新和删除mysql数据的同时对redis缓存进行更新或者删除就行,一般有两个选择,例如:先更新MySQL,后删除(或更新)Redis先删除(或更新)Redis,后更新MySQL。原创 2023-04-19 11:52:57 · 916 阅读 · 0 评论 -
如何对数据库进行优化
例如通过调大innodb_io_capacity的参数,虽然脏页刷新的速度得到了提升,但是刷新脏页会阻塞该页的数据访问,过多无意义的刷新也会增加cpu的负载。最好的方法是测量你的存储设置的随机写吞吐量,然后给innodb_io_capacity_max设置为你的设备能达到的最大IOPS。另外一点就是增加mysql缓冲池的大小,mysql很多时候不会直接读写磁盘的数据,会根据自己的算法,通过缓冲池缓存磁盘的数据到内存中,来提高查询效率,还会根据淘汰算法,来更新缓存中的冷热数据,保证缓存的命中率。原创 2023-04-18 15:05:22 · 2564 阅读 · 0 评论 -
MySQL索引15连问,你能坚持到第几问?
当查询的数据在索引树中,找不到的时候,需要回到主键索引树中去获取,这个过程叫做回表。比如下查询SQL:需要查询所有列的数据,idx_age普通索引不能满足,需要拿到主键id的值后,再回到id主键索引查找获取,这个过程就是回表。如果我们查询 SQL的select * 修改为 select id,age的话,其实是不需要回表的。因为id和age的值,都在idx_age索引树的叶子节点上这就涉及到覆盖索引的知识点了。原创 2023-04-17 23:44:53 · 659 阅读 · 1 评论 -
SqlServer数据库表生成C# Model实体类SQL语句
数据库表快速生成cs类的结构,类似:/// <summary>/// Student/// </summary>public class Student{ /// <summary> /// 主键 /// </summary> public int ID { get; set; } /// <summary> /// 姓名 /// </summary>原创 2022-12-06 11:53:29 · 1398 阅读 · 0 评论 -
Docker 安装 MySQL容器
在上图中可以看到我们已经安装了最新版本(latest)的 mysql 镜像。可以通过 Sort by 查看其他版本的 MySQL,默认是最新版本。可以通过 root 和密码 123456 访问 MySQL 服务。原创 2022-11-22 16:50:33 · 288 阅读 · 0 评论 -
mysql 通过load data local infile导入txt文件数据
如果一次性需要插入大批量数据,使用insert语句插入性能较低,可以使用MySQL数据库提供的load data local infile指令进行数据插入,执行load data local infile如果发现报错:Loading local data is disabled; this must be enabled on both the client and server sides,在mysql中输入命令:set global local_infile=1;原创 2022-10-25 10:49:51 · 1081 阅读 · 0 评论 -
MySQL 全局锁 表级锁 行锁简介
根据加锁的范围,MySQL里面的锁大致可以分成全局锁、表级锁和行锁三类。原创 2022-10-24 12:32:43 · 343 阅读 · 0 评论 -
mysql事务 Serializable
Serializable是最严格的隔离级别。在Serializable隔离级别下,所有事务按照次序依次执行,因此,脏读、不可重复读、幻读都不会出现。原创 2022-09-22 13:41:56 · 1099 阅读 · 0 评论 -
mysql 事务 Repeatable Read
脏读:读到别的事务没有提交的数据。不可重复读:先前读取的数据,被别的事务改变了,再读就跟原来不一样了。幻读:一个事务插入了某条数据,另一个事务去读插入的那条数据的时候发现没有,更新这条记录的时候又成功了,再次查询这条记录就出现了。原创 2022-09-13 08:43:32 · 1094 阅读 · 0 评论 -
mysql 事务 Read Committed
在Read Committed隔离级别下,一个事务可能会遇到不可重复读(Non Repeatable Read)的问题。不可重复读是指,在一个事务内,多次读同一数据,在这个事务还没有结束时,如果另一个事务恰好修改了这个数据,那么,在第一个事务中,两次读取的数据就可能不一致。但同时,这种隔离级别也避免了出现脏数据。原创 2022-09-08 11:44:23 · 1340 阅读 · 0 评论 -
mysql 事务 Read Uncommitted
Read Uncommitted是隔离级别最低的一种事务级别。在这种隔离级别下,一个事务会读到另一个事务更新后但未提交的数据,如果另一个事务回滚,那么当前事务读到的数据就是脏数据,这就是脏读(Dirty Read)原创 2022-09-08 10:57:51 · 498 阅读 · 0 评论 -
介绍一下几个 mysql 比较实用的sql语句
如果我们希望插入一条新记录(INSERT),但如果记录已经存在,就先删除原记录,再插入新记录。此时,可以使用REPLACE语句,这样就不必先查询,再决定是否先删除再插入如果想要对一个表进行快照,即复制一份当前表的数据到一个新表,可以结合CREATE TABLE和SELECT如果查询结果集需要写入到表中,可以结合INSERT和SELECT,将SELECT语句的结果集直接插入到指定表中。原创 2022-09-08 08:57:21 · 122 阅读 · 0 评论 -
MYSQL ‘单引号转义 \反斜杠转义
1、单引号 ' 转义今天写mysql的时候遇到一个问题,当传入的mysql语句的参数中含有单引号就会出现问题,这久需要用到转义,其实非常简单,就是使用 .Replace("'", "''") 把参数中的一个单引号替换为两个单引号 。具体使用:select '''测试' as test运行结果:具体开发可使用 Replace 替换 单引号:string parm1 = "'测试".Replace("'", "''");string sql = string.Format.原创 2021-05-08 17:46:27 · 26412 阅读 · 0 评论