202102-02 Mysql桌面工具之SQLyog资源及激活使用方法告别黑白命令行 话不多说,先上资源自学编程网下载SQLyogUltimateV13.1.164bit中文已注册安装版安装完成以后打开帮助————更改注册详细信息然后用户随便填,注册秘钥填60c1b896-7c22-4405-9f46-a6bce776ab36然后就可以使用啦。这边填你需要连接的服务器地址,跟ssh差不多,Mysql服务要打开,如果连不上检查3306端口是否开启了。连上之后就可以使用了,这边有一些快捷键然后自己慢慢研究吧到此这篇关于Mysql桌面工具之SQLyog资源及激活... 继续阅读 >
202102-02 Mysql避免重复插入数据的4种方式 最常见的方式就是为字段设置主键或唯一索引,当插入重复数据时,抛出错误,程序终止,但这会给后续处理带来麻烦,因此需要对插入语句做特殊处理,尽量避开或忽略异常,下面我简单介绍一下,感兴趣的朋友可以尝试一下:这里为了方便演示,我新建了一个user测试表,主要有id,username,sex,address这4个字段,其中主键为id(自增),同时对username字段设置了唯一索引:01insertignoreinto即插入数据时,如果数据存在,则忽略此... 继续阅读 >
202102-01 如何在mysql进行查询缓存及失败的解决方法 都知道函数在使用前需要弄清楚参数的属性,这样才能对函数的使用有较好的了解。有些小伙伴学习了查询缓存后,直接进行了下一步的实战操作。这里小编想提醒大家,开始操作之前一定要先设置参数,不然就会出现问题。下面我们来完整的讲一下mysql查询缓存的步骤以及缓存失效的分析。1.配置参数(1)have_query_cache表示是否支持查询缓存,YES表示支持(2)query_cache_type表示缓存类型,OFF表示关闭查询缓存,ON表示开启查询缓存... 继续阅读 >
202102-01 mysql 实现添加时间自动添加更新时间自动更新操作 在数据库使用中经常使用到时间字段。常用的有创建时间和更新时间。然而在使用中想要创建时间在创建的时候自动设置为当前时间,更新时间在更新时自动更新为当前时间。创建表stuCREATETABLE`stu`('id'intNOTNULLAUTO_INCREMENT,'createTime'timestampDEFAULTCURRENT_TIMESTAMPCOMMENT'创建时间','moditiyTime'timestampDEFAULTCURRENT_TIMESTAMPONUPDATECURRENT_TIMESTAMPCOMMENT'更新时间',PRIMARYKEY('id')... 继续阅读 >
202102-01 mysql 使用B+树索引有哪些优势 搞懂这个问题之前,我们首先来看一下MySQL表的存储结构,再分别对比二叉树、多叉树、B树和B+树的区别就都懂了。MySQL的存储结构表存储结构单位:表>段>区>页>行在数据库中,不论读一行,还是读多行,都是将这些行所在的页进行加载。也就是说存储空间的基本单位是页。一个页就是一棵树B+树的节点,数据库I/O操作的最小单位是页,与数据库相关的内容都会存储在页的结构里。B+树索引结构在一棵B+树中,每个节点为都是一个页,每次... 继续阅读 >
202102-01 MySQL 加锁控制并发的方法 前言锁总体可以分为乐观锁和悲观锁,简单说,乐观锁用版本号控制,悲观锁用锁控制。下面是待会要用来测试的数据#添加一个user表CREATETABLE`users`(`id`int(11)NOTNULLAUTO_INCREMENTCOMMENT'ID',`name`varchar(255)NOTNULLCOMMENT'姓名',PRIMARYKEY(`id`))ENGINE=InnoDBAUTO_INCREMENT=2DEFAULTCHARSET=utf8;#插入3条数据INSERTINTO`users`(`id`,`name`)VALUES(1,'雪山飞猪'),(2,'chenqionghe')... 继续阅读 >
202101-29 MySQL 8.0.23中复制架构从节点自动故障转移的问题 接触MGR有一段时间了,MySQL8.0.23的到来,基于MySQLGroupReplicaion(MGR)的高可用架构又提供了新的架构思路。灾备机房的slave,如何更好的支持主机房的MGR?MGR到底可以坏几个节点?这次我就以上2个问题,和大家简单聊下MGR的一些思想和功能。一、MySQLGroupRelication成员数量的容错能力上面的表格相信大家不会陌生了,我经常在面试里会问:“4个节点的MGR,最多坏几个呢?”,多数人回答:“最多坏1个,坏2个就脑裂不... 继续阅读 >
202101-29 详解MySQL中事务的持久性实现原理 前言说到数据库事务,大家脑子里一定很容易蹦出一堆事务的相关知识,如事务的ACID特性,隔离级别,解决的问题(脏读,不可重复读,幻读)等等,但是可能很少有人真正的清楚事务的这些特性又是怎么实现的,为什么要有四个隔离级别。在之前的文章我们已经了解了MySQL中事务的隔离性的实现原理,今天就继续来聊一聊MySQL持久性的实现原理。当然MySQL博大精深,文章疏漏之处在所难免,欢迎批评指正。说明MySQL的事务实现逻辑是位于引擎... 继续阅读 >
202101-29 MySQL 锁的相关知识总结 MySQL中的锁锁是为了解决并发环境下资源竞争的手段,其中乐观并发控制,悲观并发控制和多版本并发控制是数据库并发控制主要采用的技术手段(具体可见我之前的文章),而MySQL中的锁就是其中的悲观并发控制。MySQL中的锁有很多种类,我们可以按照下面方式来进行分类。按读写从数据库的读写的角度来分,数据库的锁可以分为分为以下几种:独占锁:又称排它锁、X锁、写锁。X锁不能和其他锁兼容,只要有事务对数据上加了任何锁,其他... 继续阅读 >
202101-29 MySQL中的乐观锁,悲观锁和MVCC全面解析 前言在数据库的实际使用过程中,我们常常会遇到不希望数据被同时写或者读的情景,例如秒杀场景下,两个请求同时读到系统还有库存1个,然后又先后把库存更新为0,这时候就会出现超卖的情况,这时候货物的实际库存和我们的记录就会对应不上了。为了解决这种资源竞争导致的数据不一致等问题,我们需要有一种机制来进行保证数据的正确访问和修改,而在数据库中,这种机制就是数据库的并发控制。其中乐观并发控制,悲观并发控制和多版本... 继续阅读 >
202101-29 详解MySQL中事务隔离级别的实现原理 前言说到数据库事务,大家脑子里一定很容易蹦出一堆事务的相关知识,如事务的ACID特性,隔离级别,解决的问题(脏读,不可重复读,幻读)等等,但是可能很少有人真正的清楚事务的这些特性又是怎么实现的,为什么要有四个隔离级别。今天我们就先来聊聊MySQL中事务的隔离性的实现原理,后续还会继续出文章分析其他特性的实现原理。当然MySQL博大精深,文章疏漏之处在所难免,欢迎批评指正。说明MySQL的事务实现逻辑是位于引擎层的,... 继续阅读 >
202101-29 MySQL的主键命名策略相关 最近在梳理数据生命周期管理的细节时,发现了一个小问题,那就是MySQL的主键命名策略,似乎会忽略任何形式的自定义命名。也就意味着你给主键命名为idx_pk_id这种形式,在MySQL里面会统一按照PRIMARY来处理。当然我们可以在这个基础之上做一些拓展和补充。首先来复现下问题,我们连接到数据库test,然后创建表test_data2.mysql>usetestmysql>createtabletest_data2(idint,namevarchar(30));QueryOK,0rowsaffected(0.05... 继续阅读 >
202101-29 MySQL配置了双主,是如何避免出现数据回环冲突的 不知道大家想过这个问题没有?如果配置了双主,是如何避免出现数据回环冲突的,因为在数据双活的设计方案中,这可以算是方案的核心设计思想之一。如果主库触发SQL语句:insertintotest_data(name)values(‘aa');那么Master1生成binlog,推送数据变化到Master2,在Master2上面生成relaylog,然后交由sqlthread进行变更重放,反之也是类似的流程,整个流程可以这样描述。如果Master2消费了relay的数据,然后会产生binlog(log_slave... 继续阅读 >
202101-27 MySQL 一则慢日志监控误报的问题分析与解决 之前因为各种原因,有些报警没有引起重视,最近放假马上排除了一些潜在的人为原因,发现数据库的慢日志报警有些奇怪,主要表现是慢日志报警不属实,收到报警的即时通信提醒后,隔一会去数据库里面去排查,发现慢日志的性能似乎没有那么差(我设置的一个阈值是60)。排查过几次代码层面的逻辑,没有发现明显的问题,几次下来,问题依旧,这可激发了修正的念头,决定认真看看到底是什么原因。后端使用的是基于ORM的模式,数据都存储... 继续阅读 >
202101-27 MySQL修改字符集的实战教程 前言:在MySQL中,系统支持诸多字符集,不同字符集之间也略有区别。目前最常用的字符集应该是utf8和utf8mb4了,相比于utf8,utf8mb4支持存储emoji表情,使用范围更广。本篇文章将会介绍utf8修改成utf8mb4字符集的方法。1.utf8和utf8mb4字符集介绍字符(Character)是各种文字和符号的总称,包括各国家文字、标点符号、图形符号、数字等。字符集(Characterset)是多个字符的集合。MySQL中字符集可以作用于四... 继续阅读 >
202101-26 MySQL慢查询日志的作用和开启 前言MySQL的慢查询日志是MySQL提供的一种日志记录,它用来记录在MySQL中响应时间超过阀值的语句,具体指运行时间超过long_query_time值的SQL,则会被记录到慢查询日志中。long_query_time的默认值为10,意思是运行10S以上的语句。默认情况下,Mysql数据库并不启动慢查询日志,需要我们手动来设置这个参数,当然,如果不是调优需要的话,一般不建议启动该参数,因为开启慢查询日志会或多或少带来一定的性能影响。慢查询日志支持将日... 继续阅读 >