
mysql develeper
林震南
笨小孩,攒钱,投资,争取早日财务自由,回老家教书育人
展开
-
MySQL DELETE语句HANG住问题解决纪实
1、MySQL 简单的delete语句hang住同事说线上一个库执行简单的delete卡住了,我去check线上库的负载很低,show full processlist;也没有啥慢卡住或者锁的sql在执行,那问题在哪里呢?去查看错误日志,有如下信息 2017-03-14T01:32:22.628309Z 6553507 [Note] Access denied for user 'r...原创 2019-07-29 10:49:06 · 10726 阅读 · 0 评论 -
MySQL 使用profile分析慢sql,group left join效率高于子查询
使用profile来分析慢sql有一个查询比较慢的sql语句,用了子查询,大概需要0.8秒左右,这个消耗时间比较长,严重影响了性能,所以需要进行优化。单独查询单表或者子查询记录都很快,开启profilemysql> show profiles; -- 查看是否开启Empty set, 1 warning (0.00 sec)mysql> set profiling=1; ...原创 2019-07-28 11:01:33 · 10400 阅读 · 1 评论 -
MySQL 5.7.16 字符串拆分 -> 单列变多行记录
字符串拆分,单列变成多行,并保留原来的其它字段的数据,准备测试数据:mysql> create table t1(c1 varchar(32),c2 varchar(32));Query OK, 0 rows affected (0.02 sec)mysql> INSERT INTO t1 SELECT 'man' c1,'123,234,567,789'...原创 2019-07-27 13:03:27 · 10970 阅读 · 0 评论 -
MySQL 快速构造一亿条记录的表
在上一次朋友问我如何快速构造一亿条记录的表后,我理出了实行的办法,见:https://blog.csdn.net/csdnhsh/article/details/95759379,但是因为录入一亿表需要2个小时,所以还是感觉速度慢了些,那有没有啥办法能加快这一步骤呢?1、建一张通用的用户表建用户表没有啥变化,还是和上次一样。 USE test; CREATE ...原创 2019-07-26 15:01:07 · 10532 阅读 · 2 评论 -
MySQL 如何准备一亿条记录的表来测试
曾经一个朋友问我如何快速的在线往一个大表里面添加一个字段或者修改一个字段的长度,mysql版本是5.6,所以就准备在测试环境准备一个一亿条记录的表,然后来实际测试下到底哪种方式比较快,先来开始准备一亿条记录的表。我线上有上亿条记录的表,但是很多网上朋友都没有,那么我这里就实践了一条办法,来实现自己构造一亿条数据记录的表。实现思路就是先建一张通用的20个字段左右的用户表,然后写一个存储过程...原创 2019-07-25 14:41:56 · 10365 阅读 · 0 评论 -
MySQL5.7 快速批量处理 slave从库 Last_Errno: 1062问题
运营同事说生成环境的Mysql连接报错处理:Can’t read dir of ’./business_db/’ (errno:13 – Permission denied)上去服务器,查看到原因是,mysql运行过程中,mysql数据存放目录的权限被修改成了其它帐号mongo,所以通过远程查询报错,解决办法是重新赋予mysql帐号权限,chown -R mys...原创 2019-07-21 03:14:34 · 10379 阅读 · 0 评论 -
mysql select中子查询中使用强制索引的优化案例
1,朋友找我帮忙看下比较慢的sql语句SELECT pg.product_goods_id, pg.product_id, pg.pdt_code, pg.pdt_name, pg.brand_name, pg.reference_price, pg.deposit, pg.sale_status, pg.is_delete, pg.create_date, pg.crea...原创 2019-07-12 23:05:16 · 10628 阅读 · 0 评论 -
MySQL千万级别表数据中提高RAND随机查询的实验
1,准备测试数据1.1 建库建表mysql> create database hwdb;Query OK, 1 row affected (0.34 sec)mysql>mysql> show create table t_huawei;+----------+------------------------------------------...原创 2019-07-07 17:20:08 · 10244 阅读 · 1 评论 -
MySQL日期字符串转换成NULL值的异常处理
1,YYYYmmdd格式日期转换为null看如下记录,一个能取到值,一个取不到值**mysql> SELECT DATE_FORMAT(STR_TO_DATE(‘20150922 13:01:01’, ‘%Y%m%d %H:%m:%s’),’%H:%m’);±----------------------------------------------------------------...原创 2019-07-07 10:36:59 · 3145 阅读 · 0 评论 -
MySQL 瑞士军刀
MySQL的瑞士军刀这里主要讲mysql运维中的一些主要工具,这些工具可能大家都用过,特别是系统管理员或者做linux服务器维护的同学可能都知道这些小工具,这里讲得会比较多一些,除了系统监控的小工具,还包括一些mysql的工具,甚至深入一些的工具也会讲到,重点是大家听完了后,一定要去自己动手实践一下,这样才有意义,熟能生巧。光听说过是不行的,还得都要去实践,实践出真...原创 2019-07-04 17:48:37 · 10372 阅读 · 0 评论 -
MySQL 事务RUNNING状态引发的Transaction timed out: deadline问题
前言: 朋友说简单的查询导致Transaction timed out: deadline问题,怀疑是数据库表锁了,1,应用故障描述Deadline问题:--- The error occurred in META-INF/ibatis/ITEM_sqlmap.xml. --- The error occurred while executing query. --- Check...原创 2019-06-30 00:56:51 · 22245 阅读 · 1 评论 -
MySQL 全角转换为半角
序言: 用户注册时候,录入了全角手机号码,所以导致短信系统根据手机字段发送短信失败,现在问题来了,如何把全角手机号码变成半角手机号码?1,手机号码全角转换成半角先查询出来全角半角都存在的手机号码的数据SELECT a.username ,COUNT(1) AS numFROM(SELECT REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(R...原创 2019-06-30 00:56:36 · 12033 阅读 · 4 评论 -
MySQL 通过Profiles查看create语句的执行时间消耗
一,查看profiles的状态值1,查看profiles是否已经打开了,默认是不打开的。 mysql> show profiles; Empty set (0.02 sec)mysql> show variables like '%pro%';+---------------------------+-------+| Variable_name...原创 2019-06-28 00:00:59 · 10158 阅读 · 0 评论 -
MySQL 分组排序取前N条记录以及生成自动数字序列,类似group by后 limit
前言:同事的业务场景是,按照cid、author分组,再按照id倒叙,取出前2条记录出来。oracle里面可以通过row_number() OVER (PARTITION BY cid,author ORDER BY id DESC) 表示根据cid,author分组,在分组内部根据id排序,而此函数计算的值就表示每组内部排序后的顺序编号(组内连续的唯一的),而my...原创 2019-06-28 00:00:45 · 10217 阅读 · 0 评论 -
MySQL 行列转换变化各种方法实现总结(行变列报表统计、列变行数据记录统计等)
前言:mysql行列变化,最难的就是将多个列变成多行,使用的比较多的是统计学中行变列,列变行,没有找到现成的函数或者语句,所以自己写了存储过程,使用动态sql来实现,应用业务场景,用户每个月都有使用记录数录入一张表,一个月一个字段,所以表的字段是动态增长的,现在需要实时统计当前用户使用的总数量,如果你知道有多少个字段,那么可以用select c1+c2+c3+…. From tbname w...原创 2019-06-28 00:00:39 · 10815 阅读 · 0 评论 -
MySQL分组排序取前N条记录 以及 生成自动数字序列 的SQL
-- MySQL分组排序取前N条记录的最简洁的单条sql。USE test;DROP TABLE IF EXISTS test;CREATE TABLE test ( id INT PRIMARY KEY, cid INT, author VARCHAR(30)) ENGINE=MYISAM;INSERT INTO test VALUES (1,1,'test1'),(...原创 2019-06-22 10:54:26 · 10268 阅读 · 0 评论 -
MySQL存储过程 -- 长字符串扯分
DELIMITER $$ -- 分隔符USE`test`$$ --DROPPROCEDURE IF EXISTS `pro_split`$$ -- 如果已经存在则删除procCREATEPROCEDURE `test`.`pro_split` (varchar rids)BEGIN DECLAREpo INT DEFAULT 0; -- 定义一个位置点...原创 2019-06-16 00:13:35 · 10209 阅读 · 0 评论