sql
文章平均质量分 87
xuxizhou1994
厚积薄发
展开
-
Mysql MVCC实现原理以及解决幻读和不可重复读问题
数据读取特性不可重复读 指一个事务范围内两个相同的查询却返回了不同数据 这是由于查询时系统中其他事务修改的提交而引起的 幻读 在两个连续的查找之间一个并发的修改事务修改了查询的数据集,导致这两个查询返回了不同的结果 这是由于查询时系统中其他事务新增或者删除记录引起的 事务隔离级别Read Commited(提交读) 一个事务从开始到提交前,所作的任何修改对其他事务不可见 仅能读取到已提交的记录,这种隔离级别下,每条语句都会读取已提交事务的更新,若两次查询之间有其他事务提交原创 2021-03-01 13:49:54 · 348 阅读 · 0 评论 -
MySQL之MVVC
1、什么是锁?一种保护机制,在多线程的情况下,保证操作数据的正确性与一致性2、锁有哪些分类?悲观锁、乐观锁、独占锁、共享锁、公平锁、非公平锁、分布式锁、自旋锁3、谈谈悲观锁乐观锁:指的是看待并发同步的角度,一般结合数据库将,以MySQL为例,悲观锁主要是表锁,行锁和间隙锁,叶锁,读锁,因为这些锁在被触发时会引起线程阻塞,所以叫悲观锁;而乐观锁其实在MySQL中本身不存在,但是MySQL提供了MVCC的机制,支持乐观锁机制4、什么是MVCC?只有在InnoDB引擎下存在,MVCC是为原创 2021-01-27 22:18:53 · 236 阅读 · 0 评论 -
MySQL日志系统:redo log、binlog、undo log
日志系统主要有redo log(重做日志)和binlog(归档日志)。redo log是InnoDB存储引擎层的日志,binlog是MySQL Server层记录的日志, 两者都是记录了某些操作的日志(不是所有)自然有些重复(但两者记录的格式不同)。redo log日志模块redo log是InnoDB存储引擎层的日志,又称重做日志文件,用于记录事务操作的变化,记录的是数据修改之后的值,不管事务是否提交都会记录下来。在实例和介质失败(media failure)时,redo log文件就能派上用原创 2021-01-27 21:49:31 · 99 阅读 · 0 评论 -
ubuntu mysql group by 问题
错误:[Err] 1055 - Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated colum原因是 mysql5.7以上 sql_mode默认有ONLY_FULL_GROUP_BY ,可以使用show variables like '%sql_mode%'查看sql_mode=ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO..原创 2020-12-30 16:26:41 · 119 阅读 · 0 评论 -
mysql 时间函数
日期 d 今天是星期几,1 星期日,2 星期一,以此类推SELECT WEEK('2020-12-26 11:11:11');日期 d 是星期几,0 表示星期一,1 表示星期二SELECT WEEKDAY("2020-12-26 11:11:11");计算起始日期 d 加上 n 天的日期SELECT ADDDATE("2020-12-26", INTERVAL 10 DAY);返回当前日期SELECT CURDATE();返回当前日期SELECT CURRENT_DATE();原创 2020-12-26 16:57:49 · 63 阅读 · 0 评论 -
coalesce函数
coalesce函数在Maxcompute里面的官方解释如下:具体怎么用呢?上面的函数说明通俗来说coalesce()的作用是:返回传入的参数中第一个非null的值。expre1不为空值则返回expre1;否则判断expre2是否是空值,如果expre2不为空值则返回expre2;否则判断expre3是否是空值,如果expre3不为空值则返回expre3;……以此类推,如果所有的表达式都为空值,则返回NULL。...原创 2020-11-25 20:21:49 · 301 阅读 · 0 评论 -
到底可不可以使用join?
MySQL 执行 join 语句的两种可能算法,这两种算法是由能否使用被驱动表的索引决定的。而能否用上被驱动表的索引,对 join 语句的性能影响很大。通过对 Index Nested-Loop Join 和 Block Nested-Loop Join 两个算法执行过程的分析,我们也得到了文章开头两个问题的答案:如果可以使用被驱动表的索引,join 语句还是有其优势的;不能使用被驱动表的索引,只能使用 Block Nested-Loop Join 算法,这样的语句就尽量不要使用;在使用 join 的时候,原创 2020-10-21 11:50:02 · 492 阅读 · 0 评论 -
一条SQL更新语句是如何执行的?
更新流程还涉及两个重要的日志模块,它们正是我们今天要讨论的主角:redo log(重做日志)和 binlog(归档日志)。不知道你还记不记得《孔乙己》这篇文章,酒店掌柜有一个粉板,专门用来记录客人的赊账记录。如果赊账的人不多,那么他可以把顾客名和账目写在板上。但如果赊账的人多了,粉板总会有记不下的时候,这个时候掌柜一定还有一个专门记录赊账的账本。如果有人要赊账或者还账的话,掌柜一般有两种做法:一种做法是直接把账本翻出来,把这次赊的账加上去或者扣除掉;另一种做法是先在粉板上记下这次的账,等打烊以后再...原创 2020-10-19 19:12:20 · 174 阅读 · 0 评论 -
主键索引和普通索引有什么区别?
在 MySQL 中, 索引是在存储引擎层实现的, 所以并没有统⼀的索引标准, 由于 InnoDB 存储引擎在 MySQL数据库中使⽤最为⼴泛, 下⾯以 InnoDB 为例来分析⼀下其中的索引模型.在 InnoDB 中, 表都是根据主键顺序以索引的形式存放的, InnoDB 使⽤了 B+ 树索引模型,所以数据都是存储在 B+ 树中的, 如图所示:从图中可以看出, 根据叶子节点内容不同,索引类型分为主键索引和非主键索引.主键索引也被称为聚簇索引,叶子节点存放的是整行数据; 而非主键索引被称为二级索引,叶子节点原创 2020-10-20 16:16:52 · 2920 阅读 · 1 评论 -
数据库 事务级别介绍
数据库 事务级别介绍2个概念:事务,锁。事务:逻辑单元内的一系列操作,要么全部完成执行,要么全部不执行。锁:将某数据的操作加锁,则其他人无法获取当前数据的当前操作。避免单位时间内的数据覆盖,影响数据的一致性。事务是多个操作的执行逻辑与的集合。事务内控制加锁,实现不同的级别。事务内的锁,需等事务结束才能释放锁。不加事务的锁,操作完即释放锁。三操作:读,rade -R写,write -W增,add -A锁分类:锁住操作,避免其他人获取。写操作枷锁 排它锁 X 锁读操作加锁 共享锁原创 2020-10-13 14:08:18 · 807 阅读 · 0 评论 -
MySQL5.7修改默认事务隔离级别
MySQL默认的事务隔离级别是“可重复读”也就是REPEATABLE-READ。事务隔离级别包括:1 读未提交 READ-UNCOMMITTED 2 读提交 READ-COMMITTED 3 可重复读 REPEATABLE-READ 4 串行化 SERIALIZABLE 若要修改,需要编辑my.cnf文件。假如要改为READ-COMMITTED。sudo vi /etc/mysql/my.cnf在文件末尾添加:.原创 2020-10-13 14:07:16 · 1735 阅读 · 0 评论 -
ERROR 2002 (HY000): Can‘t connect to local MySQL server through socket ‘/tmp/mysql.sock‘ (2)
解决方法: 经排查,发现/tmp/mysql.sock不存在。mysqld.sock是mysql启动以后自动生成的文件,关闭MySQL服务后,这个文件又会被删除。如果MySQL启动异常,就有可能不生成这个文件,登录的时候就会出现你这个错误。可能是mysql未启动,尝试启动:sudo mysql.server start如果无法启动mysql,执行以下操作在终端中输入mysqld结果xiaoyuan:~ xiaoyuan$ mysqld2019-...原创 2020-09-08 15:17:25 · 103 阅读 · 0 评论 -
mac 修改mysql root密码
01-在系统偏好设置中停止mysql服务 或者使用指令sudo /usr/local/mysql/support-files/mysql.server stop02-输入指令:cd /usr/local/mysql/bin 回车03-使用管理员权限登录,sudo su 回车,提示输入电脑密码 回车,输入以下命令来禁止mysql验证功能 ./mysqld_safe --skip-grant-tables &回车后mysql会自动重启...原创 2020-07-08 16:40:12 · 463 阅读 · 0 评论 -
Axure 8.1.0.3381注册码
License:zdfansKey:fZw2VoYzXakllUuLVdTH13QYWnjD6NZrxgubQkaRyxD5+HNMqdr+WZKkaa6IoE5NLicensee:zd423Key:LrZoHQetrL7OK8XOVWgvTFn+XOR32hQkrxkYj0CkbDUsvvENp6GCS38B8GiOS1ec原创 2019-06-19 10:32:56 · 312 阅读 · 1 评论 -
MySQL--localhost、局域网、外网访问MySQL
1. 打开CMD,导航到当前MySQL的bin路径,如下图:2. 访问MySQL:输入MySQL -u root -p,点击Enter键,即可看到密码输入框:输入密码,点需Enter键确定,即可看到如下图:表示访问MySQL成功。3. 选择数据库:输入use mysql;4. 添加局域网访问:输入update user set host = '%' wher...原创 2019-05-15 11:37:15 · 552 阅读 · 0 评论