202102-21 详解mysql 使用left join添加where条件的问题分析 当前需求:有group和factor两张表,一个group对应多个factor,现在想查询有效的group和对应的有效的factor,两个表都有isDel逻辑删除标志。最开始的错误写法一:SELECTg.*,f.*FROMgroupsgLEFTJOINfactorfONf.groupId=g.idwhereg.isDel=0andf.isDel=0LEFTJOIN关键字会从左表(table_name1)那里返回所有的行,即使在右表(table_name2)中没有匹配的行。上边这样写左边表要是在右边表没有对应数据是查询不出来的... 继续阅读 >
202102-21 MySQL高并发生成唯一订单号的方法实现 前言这篇博文发布后,有朋友问有没有SQLserver版本的,现在有了==》传送门一、场景再现在一个erp进销存系统或0A等其他系统中,如果多人同时进行生成订单号的操作的话,容易出现多人获得同一个订单号的情况,对公司业务造成不可挽回的损失二、如何避免高并发情况订单号不唯一我们可以利用存储过程和数据表搭配,建立一张表和创建存储过程,存储过程负责生成订单号,表负责处理唯一性问题当存储过程生成一个订单编号,首先先把订单... 继续阅读 >
202102-21 mysql8.0.11数据目录迁移的实现 mysql的存储目录默认是在/var/lib/mysql/,下面将修改默认存储目录.本文使用mysql8.0.11版本,与mysql8.0.20版本不同,8.0.20版本的数据迁移请看另一篇博客:mysql8.0.20数据迁移1.先停止mysql服务:servicemysqlstop2.创建需要存放的目录位置并赋予权限:mkdir-p/bak/mysql_datachmod766/bak/mysql_data3.转移原有数据,这里使用cp-a进行复制(先进入到默认目录/usr/local/,将整个mysql目录进行复制):cp-amysql/bak/mysql_d... 继续阅读 >
202102-21 mysql8.0.20数据目录迁移的方法 mysql的存储目录默认是在/var/lib/mysql/,下面将修改默认存储目录.本文使用mysql8.0.20版本,与mysql8.0.11版本不同,8.0.11版本的数据迁移请看另一篇博客:mysql8.0.11数据迁移1.先停止mysql服务:servicemysqldstop2.创建需要存放的目录位置并赋予权限:mkdir-p/bak/mysql_datachmod766/bak/mysql_data3.转移原有数据,这里使用cp-a进行复制(先进入到默认目录/var/lib/,将整个mysql目录进行复制):cp-amysql/bak/mysql_data... 继续阅读 >
202102-21 MySQL InnoDB 锁的相关总结 1. SharedandExclusiveLockssharedlock(译:共享锁)exclusivelock(译:排它锁、独占锁)InnoDB实现了标准的行级锁,其中有两种类型的锁,共享锁(sharedlocks)和排他锁(exclusivelocks)。Ashared(S)lockpermitsthetransactionthatholdsthelocktoreadarow.Anexclusive(X)lockpermitsthetransactionthatholdsthelocktoupdateordeletearow.共享锁允许持有该锁的事务读取一行。排... 继续阅读 >
202102-21 MySQL 查看链接及杀掉异常链接的方法 前言: 在数据库运维过程中,我们时常会关注数据库的链接情况,比如总共有多少链接、有多少活跃链接、有没有执行时间过长的链接等。数据库的各种异常也能通过链接情况间接反应出来,特别是数据库出现死锁或严重卡顿的时候,我们首先应该查看数据库是否有异常链接,并杀掉这些异常链接。本篇文章将主要介绍如何查看数据库链接及如何杀掉异常链接的方法。 1.查看数据库链接查看数据库链接最常用的语句就是showprocessli... 继续阅读 >
202102-21 MySQL数据库自动补全命令的三种方法 注意:第三种方法要在XSell中使用,在finalsell中使用不了方式一:临时使用自动补全功能方式二:永久使用自动补全功能vim/etc/my.cnf[mysql]auto-rehash方式三:使用软件mycli实现自动补全功能此方法需要使用在线源进行软件包的安装yum-yinstallepel-releaseyum-yinstallpython-pipyum-yinstallpython-develyumcleanallyum-yinstallgcclibffi-developenssl-devel&&pipinstall--ignore-installedmycli==1... 继续阅读 >
202102-21 MySQL的DATE_FORMAT函数的使用 假设某宝为鼓励大家双12买买买,奖励双十一那天订单最多的两位用户:分别是用户1:“剁手皇帝陈哈哈”和用户2:“触手怪刘大莉”一人一万元;需求1:让你通过MySQL订单表,统计一下双11那天,这两位每小时的购买订单成交数;你会怎么写这条SQL呢?记得几年前我刚接触MySQl,年少轻狂,在得知不用考虑效率的情况下,我写了个接口循环二十四遍,发送24条SQL去查(捂脸),由于那个接口,被技术经理嘲讽~~表示他写的SQL比我吃的米... 继续阅读 >
202102-21 mysql实现自增序列的示例代码 1.创建sequence表CREATETABLE`sequence`(`name`varchar(50)COLLATEutf8_binNOTNULLCOMMENT'序列的名字',`current_value`int(11)NOTNULLCOMMENT'序列的当前值',`increment`int(11)NOTNULLDEFAULT'1'COMMENT'序列的自增值',PRIMARYKEY(`name`))ENGINE=InnoDBDEFAULTCHARSET=utf8COLLATE=utf8_bin;2.创建?取当前值的函数DROPFUNCTIONIFEXISTScurrval;DELIMITER$CREATEFUNCTIONcurrval(seq_... 继续阅读 >
202102-21 mysql 实现设置多个主键的操作 user表,身份证号码要唯一,手机号码,邮箱要唯一实现方式:表结构不用动。一个主键Id加索引实现如图类型设置索引类型为Unique唯一选择栏位,命个名就行。索引方式btree就好。ok啦~补充:mysql实现多表主键不重复同一个数据库中有两张表,里面字段都是一样,只是因为存的数据要区分开。但是主键不能重复。具体实现如下:新建数据库mytest新建user表和admin表CREATETABLE`user`(`user_id`INT(11)NOTNULL,`user_name`V... 继续阅读 >
202102-21 Mysql 增加主键或者修改主键的sql语句操作 添加表字段altertabletable1addtransactorvarchar(10)notNull;altertabletable1addidintunsignednotNullauto_incrementprimarykey修改某个表的字段类型及指定为空或非空altertable表名称change字段名称字段名称字段类型[是否允许非空];altertable表名称modify字段名称字段类型[是否允许非空];altertable表名称modify字段名称字段类型[是否允许非空];修改某个表的字段名称及指定为空或非空alt... 继续阅读 >
202102-21 从云数据迁移服务看MySQL大表抽取模式的原理解析 摘要:MySQLJDBC抽取到底应该采用什么样的方式,且听小编给你娓娓道来。小编最近在云上的一个迁移项目中被MySQL抽取模式折磨的很惨。一开始爆内存被客户怼,再后来迁移效率低下再被怼。MySQLJDBC抽取到底应该采用什么样的方式,且听小编给你娓娓道来。1.1Java-JDBC通信原理JDBC与数据库之间的通信是通过socket完,大致流程如下图所示。MysqlServer->内核SocketBuffer->客户端SocketBuffer->JDBC所在的JVM1.2JDBC读取数... 继续阅读 >
202102-21 mysql decimal数据类型转换的实现 最近在工作遇到数据库中存的数据类型是:decimal(14,4)遇到的问题是:当我使用python读取到内存中时,总是带着decimal字符,再写入其它mysql表中时,数据类型为int型,导致数据入库不成功.importpymysql#创建数据库连接con=pymysql.connect()sql='''selectcreated_timefromschma.tableLIMIT10'''try:cur=con.cursor(cursor=pymysql.cursors.DictCursor)cur.execute(sql)exceptExceptionase:print(e)else:data=c... 继续阅读 >
202102-21 mysql 大表批量删除大量数据的实现方法 问题参考自:https://www.zhihu.com/question/440066129/answer/1685329456,mysql中,一张表里有3亿数据,未分表,其中一个字段是企业类型,企业类型是一般企业和个体户,个体户的数据量差不多占50%,根据条件把个体户的行都删掉。请问如何操作?答案为个人原创假设表的引擎是Innodb,MySQL5.7+删除一条记录,首先锁住这条记录,数据原有的被废弃,记录头发生变化,主要是打上了删除标记。也就是原有的数据deleted_flag变成... 继续阅读 >
202102-21 MySQL 搭建MHA架构部署的步骤 MAH一:MAH架构介绍MHA(MasterHighAvailability)目前在MySQL高可用方面是一个相对成熟的解决方案,它由日本人youshimaton开发,是一套优秀的作为MySQL高可用性环境下故障切换和主从提升的高可用软件。在MySQL故障切换过程中,MHA能做到0~30秒之内自动完成数据库的故障切换操作,并且在进行故障切换的过程中,MHA能最大程度上保证数据库的一致性,以达到真正意义上的高可用。MHA由两部分组成:MHAManager(管理节点)和MHANod... 继续阅读 >
202102-21 mysql 判断是否为子集的方法步骤 一、问题故事起源于一个查询错漏率的报表:有两个查询结果,分别是报告已经添加的项目和报告应该添加的项目,求报告无遗漏率何为无遗漏?即,应该添加的项目已经被全部添加报告无遗漏率也就是无遗漏报告数占报告总数的比率这里以两个报告示例(分别是已全部添加和有遗漏的报告)首先,查出第一个结果——报告应该添加的项目SELECTr.idAS报告ID,m.project_id应添加项目FROMreportrINNERJOINapplicationaONr.ap... 继续阅读 >