
MySQL
文章平均质量分 68
yinnnnnnn
这个作者很懒,什么都没留下…
展开
-
实例讲解MySQL的join、inner join、out join、left join、right join的区别
一、初始化构造数据:班级表t_class:3行数据,c1、c2、c4,其中c4是t_student中未包含的。学生表t_student:6行数据,t1~t6,其中t6是t_class中未包含的。CREATE TABLE `t_class` ( `cname` char(200) CHARACTER SET utf8 DEFAULT NULL COMMENT '班级名', `teacher` char(200) CHARACTER SET utf8 DEFAULT NULL COMMEN原创 2021-02-15 15:38:07 · 6063 阅读 · 3 评论 -
实现前后行相减的SQL该如何写?有两种方法!
背景有时会有这样一种查询场景,需要对查询结果前后行操作,比如后一行减前一行。比如有一张用户登录表,有登入和登出两行,需要相减简单计算在线时长。或者一张订单表,需要计算后一行的订单id和前一行的订单id差多少(假设订单号是单调递增的)。针对这类场景,SQL语句改如何写呢?表结构和数据构造以统计前后行的订单号是否连续为例,表结构:CREATE TABLE `t_test3` ( `i...原创 2019-01-14 21:03:26 · 23622 阅读 · 0 评论 -
MySQL 8.0新特性--让你轻轻松松找到配置项的位置
前言我们都知道,MySQL配置项可以从多种方式设置:1、在配置文件中定义, 查看配置路径:mysqld --verbose --help| grep -A 1 "Default options" /etc/mysql/my.cnf ~/.my.cnf /usr/etc/my.cnf2、通过命令动态修改set global var=value;原创 2017-11-19 10:45:25 · 10163 阅读 · 1 评论 -
好书推荐-英文原版【Understanding MySQL Internals】(附下载地址)
1.综述这是一本值得每一位程序员去看的原版书,质量非常高,堪称MySQL的经典之作。书的内容包括: 1. MySQL源码的获取、编译、阅读方式的介绍; 2. 核心类、数据结构、核心的全局变量、API介绍(必读); 3. client/server的通讯协议方式,通讯包格式介绍; 4. 变量配置介绍,包括配置文件的解析过程; 5. 基于线程的请求处理模式; 6. 存储引擎接口(MySQL是原创 2017-03-12 22:24:05 · 3611 阅读 · 0 评论 -
定位MySQL锁和事务问题的两大利器
序言MySQL服务器和独立的存储引擎都可以设置锁。一般来说锁分为读锁(或叫共享锁)和写锁(排它锁)。读锁允许并发线程读取加锁的数据,但禁止写数据;相反,写锁禁止其他线程读写操作。 MySQL有4种类型的锁:表锁、行锁、页锁、元数据锁:表锁:顾名思义会锁住整张表,myisam引擎就实现的是表锁;行锁:粒度更细,仅锁住正在被线程访问的任意一行或多行,因此同一个表中的其他行仍然可以被其他并发线程访原创 2017-03-05 22:50:19 · 3192 阅读 · 0 评论 -
MySQL表损坏修复解决方案
数据损坏原因MySQL表损坏一般是数据损坏,引起损坏的原因可能是由于磁盘损坏、系统崩溃或者MySQL服务器被崩溃等外部原因。例如有人使用kill -9终止进程,导致MySQL进程未能正常关闭,那么就很有可能导致数据损坏。 对于不同的引擎,数据损坏修复的方式不一样,作为一般情况可以尝试使用CHECK TABLE和REPAIR TABLE命令修复。MyISAM损坏的修复方案MyISAM损坏有两种修复方原创 2017-03-04 10:18:09 · 28029 阅读 · 0 评论 -
MySQL启动报【The server quit without updating PID file】错误的解决过程
1.凌乱的错误过程MySQL启动时,一会儿报如下错误:MySQL ERROR! The server quit without updating PID file mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended一会又报其他错误: The server quit without updating PID file (原创 2017-02-20 17:17:59 · 64121 阅读 · 2 评论 -
触发了MySQL一个bug导致进程不断crash重启
1. 过程测试机卡死进不去,手动重启了一下。 重启后发现mysql有张损坏,select特定的条件会报错: error_code :2013 Lost connection to MySQL server during query2013断开连接。难道执行超时了?查看mysql errlog show variables like ‘%log_error%’2. 查看MySQL原创 2017-02-10 15:26:17 · 13261 阅读 · 3 评论 -
吃惊!4张不足千行的表导致MySQL负载飙高到200%
一、问题表现如图,今天网页打开缓慢,到MySQL服务器上打开top一看,吓死MySQL CPU飙高到200%: 二、定位过程通过SHOW PROCESSLIST查看发现有一个慢查询(SHOW PROCESSLIST查看不了完整的命令,通过查看slow_log拿到完整的sql):# sql语句类似SELECT * FROM t_join1 t1 JOIN t_join2 t2 JOIN t_joi原创 2016-11-30 21:26:29 · 1536 阅读 · 0 评论 -
MySQL date、datetime和timestamp类型的区别
date和datetime、timestamp 的区别date保存精度到天,格式为:YYYY-MM-DD,如2016-11-07datetime和timestamp精度保存到秒,格式为:YYYY-MM-DD HH:MM:SS,如:2016-11-07 10:58:27因此如果只需保存到天的字段(如生日)用date就可以了。datetime 和timestamp两者都是时间类原创 2016-11-14 21:25:17 · 7373 阅读 · 0 评论 -
MySQL主从同步配置及存量数据同步方案
实践准备:准备两台服务器:主:192.168.8.10备:192.168.8.11MySQL的版本最好保持一致。步骤一: 授权给从服务器创建一个专门的同步账号:GRANT REPLICATION SLAVE ON . to 'repl'@'192.168.8.11' identified by 'passwd';步骤二: 查看主服原创 2016-10-19 16:23:37 · 4527 阅读 · 0 评论 -
解答MySQL字段类型varchar和char最核心的两大疑问
MySQL最常见的字符串类似是char和varchar,关于这两者的区别我们都知道char是定长,varchar是变长。本文希望解决下面几个疑问: * varchar除了是变长外,两者还有没有其他区别? 存储方面:varchar节省了存储空间,但需要使用1或2个额外字节记录字符串长度(小于255只用一个) 性能方面:由于varchar行是变长的,在update时时可能使行变得更长,需要额外的工原创 2016-11-06 20:08:10 · 818 阅读 · 0 评论 -
MySQL 一键生成wiki、protobuf等
MySQL SHOW FULL FIELDS FROM TABLE 语句的妙用例如一个create table语句:CREATE TABLE `t_user` ( `id` varchar(32) NOT NULL COMMENT '用户ID', `user_name` varchar(64) NOT NULL COMMENT '用户姓名', `password` varchar(64)原创 2016-07-05 18:18:52 · 1613 阅读 · 0 评论 -
MySQL各种日志文件
MySQL各种日志文件设置参数设置session级别的 set SESSION sort_buffer_size=7000000; 设置global级别的(重启后失效) set GLOBAL sort_buffer_size = 7000000; 修改配置文件 mysql –help | grep cnf err_log(错误日志)查看位置 show v原创 2016-08-14 18:42:51 · 488 阅读 · 0 评论 -
一个诡异的crontab执行提示1045错误码的MySQL问题定位
今天遇到一个诡异的MySQL问题,在命令行手动跑一个脚本可以执行成功,但是放到crontab执行时报下面的错误:ERROR 1045 (28000): Access denied for user 'vtest'@'localhost' (using password: YES)初步定位:权限问题初步定位是用户权限问题,查看了用户权限都有+-----------+-----原创 2016-09-09 19:12:00 · 643 阅读 · 0 评论 -
一种可衡量的确定MySQL前缀索引长度方法
前缀索引,是指对于varchar/text/blob类型的字段建立索引时一般都会选择前N个字符作为索引。索引很长的字符列,会让索引变得大且慢。索引开始的部分字符,这样可以大大节约索引空间,从而提高索引效率,但这样也会降低索引的选择性。索引的选择性是指不重复的索引值(也称为基数,cardinality)和数据表的记录总数的比值。原创 2016-07-01 23:52:39 · 2084 阅读 · 1 评论 -
MySQL使用TEXT/BLOB类型的几点注意
区别* TEXT和BLOB家族之间仅有的不同是BLOB类型存储的是二进制数据,没有排序规则或字符集,而TEXT类型有字符集或排序规则。说白了如果要储存中文则选择TEXT。默认值不能设置默认值,否则会报(can’t have a default value)错:mysql> create table `test`.`text_blob`( -> `a_text` text DEFAUL原创 2016-06-30 21:43:10 · 13114 阅读 · 0 评论