
mysql
文章平均质量分 52
10年老码农
10年IT从业经验,从事java、PHP后台、物联网开发工作。
展开
-
数据备份 mysqldump: Error 2013: Lost connection to MySQL server during query when dumping table
遇到这个问题,网上有很多解决方案了。唯一有效的是设置这两个参数,这两参数是跟tcp链接有关,一个是导出(读),一个是导入(写)的时间,单位为秒,我这设1800秒=30分钟。net_read_timeout:1800net_write_timeout:1800(出现这个bug的原因是:dump端出来的数据如果(server)接收端,来不级接收,则会存到内存,如果存在内存的时间超过net_read_timeout 则会报 lost connection)当然经过上述优化后,导出不再报 lost.原创 2021-07-30 10:32:28 · 5856 阅读 · 0 评论 -
mysqldump+crontab定时任务实现异地备份
之前都是服务器管理工具备份,但备份仅在当前服务器。为了数据更安全,需要异地备份。异地备份有多种实现方法,其中我用的是mysqldump 直接备份的数据库。1、首先写备份脚本,网上有很多,自己百度了。这里有个点就是要给帐号足够的权限,如selecl,process,view,tigger等。脚本写好后,手动执行下,脚本成功。2、放脚本写到linux crontab里。我这里是2小时执行一次。其中每个*表示的意义如下第1列分钟1~59第2列小时1~23(0表示子夜)...原创 2021-07-23 09:39:15 · 439 阅读 · 1 评论 -
Mysql Join语法解析与性能分析--通过集合来看join
一.Join语法概述join 用于多表中字段之间的联系,语法如下:... FROM table1 INNER|LEFT|RIGHT JOIN table2 ON conditionatable1:左表;table2:右表。JOIN 按照功能大致分为如下三类:INNER JOIN(内连接,或等值连接):取得两个表中存在连接匹配关系的记录。LEFT JOIN原创 2021-01-26 11:01:01 · 645 阅读 · 1 评论 -
group_concat where in 长度的坑?
GROUP_CONCAT()函数可以将多条记录的同一字段的值,拼接成一条记录返回。但是默认情况下,这个拼接最大长度是有限制的,导致查询结果不完整。我本来有345个id,结果查出来才有206个,后来查了百度才知道,group_concat是有长度限制的查询group_concat的长度,默认为1024字节show variables like 'group_concat_max_len';接下来,怎么设置它的长度?两个办法1、长久设置,有服务器权限,则group_concat_m原创 2021-01-24 21:56:51 · 566 阅读 · 0 评论 -
mysql命令行导出、迁移大表,大数据量方法。
window下1.导出整个数据库mysqldump -u 用户名 -p 数据库名 > 导出的文件名mysqldump -u dbuser -p dbname > dbname.sql2.导出一个表mysqldump -u 用户名 -p 数据库名 表名> 导出的文件名mysqldump -u dbuser -p dbname users> dbname_users.sql3.导出一个数据库结构mysqldump -u dbuser -p -d --add-drop-t原创 2021-01-20 16:31:20 · 1145 阅读 · 0 评论 -
手抖删除了mysql中的数据,怎么用binlog恢复?
相信后端研发的同学在开发过程经常会遇到产品临时修改线上数据的需求,如果手法很稳那么很庆幸可以很快完成任务,很不幸某一天突然手一抖把表里的数据修改错误或者误删了,这个时候你会发现各种问题反馈接踵而来。如果身边有BDA或者有这方面经验的同事那么可以很快解决这个问题,如果没有那么希望这篇文章可以帮到你。第一步:保证mysql已经开启binlog,查看命令:查看binklog是否开启show variables like '%log_bin%';查看binlog存放日志文件目录(博主用宝搭,bin原创 2021-01-19 14:14:31 · 82 阅读 · 0 评论 -
现在数据库查询如何解决N+1问题
数据表如下user表:user_id,name,course_idcourse表:course_id, name需求是得到以下结构:[ { "id": 1, "name": "simple", "course_id": 1, "course":{"course_id": 1, "name": 'english'} }],1.循环查询:首先查询用户列表,然后循环用户列表查询对应的课程信息$users = "select * from user";原创 2021-01-18 23:59:29 · 482 阅读 · 0 评论 -
mysql 同帐号可以访问数据表,却无权限访问视图?
今天在迁移服务器过的过程中,遇到同帐号可以访问数据表,却无权限访问视图?百思不得其解,因为原来旧服务器没有这问题呀。于是网上各种查,终没有找到答案。算了,还是自己摸索下。于是用Navicat查mysql帐号,show view,create view都给了呀。还是无权限,于是去设计了下视图,发现了这个。如果安全性定义为:definer,则需要要定义者指明:帐号@地址,例如:test@localhost...原创 2020-11-09 15:27:48 · 831 阅读 · 0 评论 -
explain结果每个字段的含义说明
我们都知道用explain xxx分析sql语句的性能,但是具体从explain的结果怎么分析性能以及每个字段的含义你清楚吗?这里我做下总结记录,也是供自己以后参考。首先需要注意:MYSQL 5.6.3以前只能EXPLAIN SELECT; MYSQL5.6.3以后就可以EXPLAIN SELECT,UPDATE,DELETEexplain结果示例:mysql> explain select * from staff;+----+-------------+-------+-.转载 2020-08-19 08:30:43 · 2111 阅读 · 1 评论 -
mysql经常会用到 show processlist
最近排查一些MySQL的问题,会经常用到 show processlist,所以在这里把这个命令总结一下,做个备忘,以备不时只需。首先是几条常用的SQL。1、按客户端 IP 分组,看哪个客户端的链接数最多 1 selectclient_ip,count(client_ip)asclient_numfrom(selectsubstring_inde...原创 2020-04-23 14:07:43 · 320 阅读 · 0 评论 -
数据库索引为什么使用B+树而不是hashmap
1、hash表只能匹配是否相等,不能实现范围查找2、当需要按照索引进行order by时,hash值没办法支持排序3、组合索引可以支持部分索引查询,如(a,b,c)的组合索引,查询中只用到了阿和b也可以查询的,如果使用hash表,组合索引会将几个字段合并hash,没办法支持部分索引4、当数据量很大时,hash冲突的概率也会非常大5、B+树作为索引时,非叶子节点只保存索引,叶子节点才会保存数...原创 2020-04-20 00:21:27 · 1423 阅读 · 2 评论 -
MySQL大数据量分页性能优化
测试实验1. 直接用limitstart,count分页语句,也是我程序中用的方法:select*fromproductlimitstart,count当起始页较小时,查询没有性能问题,我们分别看下从10,100,1000,10000开始分页的执行时间(每页取20条),如下:select*fromproductlimit10,20 0.0...转载 2020-04-03 23:46:18 · 482 阅读 · 0 评论 -
mysql如何过滤非纯数字记录
国为mysql会发生隐式转换,如11abc会转成11。导致我们在查询,统计时,容易出错。解决办法有两种,如果数据相对固定则加这个条件 LENGTH(0+value)=LENGTH(value)但这个也会把,12.00 这样的数给过滤了。所以在数据复杂的情况下value 可能有:12.00,12.12,“11月”,“abc12”则使用正则(value REGEXP ...原创 2019-12-19 16:36:50 · 2739 阅读 · 0 评论 -
MySQL开启federated引擎实现数据库表映射
1.查看federated引擎是否开启点击进入Navicat并点击键盘上F6,出现命令行界面 ,输入指令:show engines;2.开启federated引擎Windows系统 : 在my.ini中加入federated3.建立映射表在服务器A上有MySQL数据库test_a,在服务器B上有MySQL数据库test_b。现在需要将test_a库中的us...原创 2019-10-07 09:38:40 · 357 阅读 · 0 评论 -
Mysql创建用户并授权以及开启远程访问
一、创建用户并授权1、登录mysqlmysql -u root -p2、创建数据库create database test;//以创建test为例3、创建用户创建user01,只能本地访问create user user01@'localhost' identified by 'password';创建user02,可以远程访问create user user02@'%' i...转载 2018-07-22 10:34:02 · 2172 阅读 · 0 评论 -
MySQL授权命令grant的使用方法 详解
本文实例,运行于 MySQL 5.0 及以上版本。MySQL 赋予用户权限命令的简单格式可概括为:grant 权限 on 数据库对象 to 用户 一、grant 普通数据用户,查询、插入、更新、删除 数据库中所有表数据的权利。grant select on testdb.* to common_user@'%'grant insert on testdb.* to commo...转载 2018-07-22 10:15:43 · 3250 阅读 · 0 评论 -
grant命令给用户授权,使mysql实现远程连接
1、进入mysql,创建一个新用户root,密码为root:格式:grant 权限 on 数据库名.表名 to 用户@登录主机 identified by “用户密码”; grant select,update,insert,delete on . to root@192.168.1.12 identified by “root”;原先数据表结构 mysql> us...转载 2018-07-22 10:14:10 · 1200 阅读 · 0 评论 -
Linux下mysql命令行 导入导出sql文件
导出数据库直接使用命令:mysqldump -u root -p abc >abc.sql然后回车输入密码就可以了;mysqldump -u 数据库链接用户名 -p 目标数据库 > 存储的文件名文件会导出到当前目录下导入数据库(sql文件)mysql -u 用户名 -p 数据库名 < 数据库名.sqlmysql -u abc -p abc <...转载 2018-07-17 14:14:04 · 872 阅读 · 0 评论 -
mysqld_safe Directory '/var/lib/mysql' for UNIX socket file don't exists.
在Linux<CentOS>服务器上安装Mysql,由于Centos自身的yum源中用Mysql的分支Mariadb代替了MySQL,所以不得不选择rpm或tar.gz包的方式安装,但是为了以后在其他LInux如Ubuntu中也能熟练安装MySQL,所以推荐使用tar.gz,安装教程—http://blog.youkuaiyun.com/qq_32331073/article/details/...转载 2018-07-16 23:09:42 · 3483 阅读 · 3 评论 -
MySQL 数据库 varchar 到底可以存多少个汉字,多少个英文呢?
一、关于UTF-8UTF-8 Unicode Transformation Format-8bit。是用以解决国际上字符的一种多字节编码。它对英文使用8位(即一个字节) ,中文使用24位(三个字节)来编码。UTF-8包含全世界所有国家需要用到的字符,是国际编码,通用性强。UTF-8编码的文字可以在各国支持UTF8字符集额的浏览器上显示。如果是UTF8编码,则在外国人的英文IE也能显示中文,他们无需...转载 2018-06-29 00:30:13 · 1310 阅读 · 0 评论 -
mysql innodb count(*)速度慢的几个解决方案
mysql innodb count(*)速度慢且不准确的解决办法innodb引擎在统计方面和myisam是不同的,Myisam内置了一个计数器,所以在使用 select count(*) from table 的时候,直接可以从计数器中取出数据。而innodb必须全表扫描一次方能得到总的数量。要初步解决这个问题,需要做不同于myisam的一些工作: 1、使用第二索引(一般不使用主键索引),并且添...转载 2018-06-13 09:21:53 · 12518 阅读 · 0 评论 -
mysql 创建索引命令行
1.PRIMARY KEY(主键索引)mysql>ALTER TABLE `table_name` ADD PRIMARY KEY ( `column` ) 2.UNIQUE(唯一索引)mysql>ALTER TABLE `table_name` ADD UNIQUE (`column` ) 3.INDEX(普通索引)mysql>ALTER TABLE ...转载 2018-06-12 15:43:02 · 760 阅读 · 0 评论 -
mysql中,字符串如何建立索引的(本文中截取一部分)
所以索引的设计者提出了个方案 --- 只对字符串的前几个字符进行索引。通过字符串的前几个字符我们已经能大概排序字符串了,剩下不能排序的可以通过遍历进行查找啊,这样只在B+树中存储字符串的前几个字符的编码,既节约空间,又减少了字符串的比较时间,还大概能解决排序的问题,何乐而不为,比方说我们在建表语句中只对name列的前10个字符进行索引可以这么写:CREATE TABLE person_info( ...转载 2018-05-18 09:32:08 · 10403 阅读 · 3 评论 -
Mysql中FIND_IN_SET()和IN比较
前段时间项目中使用到Mysql的FIND_IN_SET函数,感觉挺好用的。过一段时间,老大找到我说,这个需要改为IN,哈哈,只能改了,原因会在下面分析到!弄个测试表来说说两者的区别,测试数据直接在问答区copy一份,能说明问题就行,哈哈,如果侵犯您的版权还请见谅,互联网吗,就需要分享![java] view plain copy测试代码: CREATE TABLE `test` ( `i...转载 2018-04-28 17:36:37 · 1172 阅读 · 1 评论 -
linux安装mysql 几种方式
1. 关于本文 本文将以MySQL 5.0.51为例,以CentOS 5为平台,讲述MySQL数据库的安装和设置。2. 关于MySQL MySQL是最流行的开源SQL数据库管理系统,它由MySQL AB开发、发布和支持。MySQL AB是一家由MySQL开发人员创建的商业公司,它是一家使用了一种成功的商业模式来结合开源价值和方法论的第二代开源公司。MySQL是MySQL AB的注册商标...转载 2018-03-16 15:53:23 · 4031 阅读 · 0 评论 -
mysql exists 和 in 运行原理解析
这条语句适用于a表比b表大的情况select * from ecs_goods a where cat_id in(select cat_id from ecs_category); 这条语句适用于b表比a表大的情况select * from ecs_goods a where EXISTS(select cat_id from ecs_category b where转载 2017-10-23 11:45:28 · 6533 阅读 · 1 评论 -
ORDER BY 的实现与优化
前言除了常规的Join语句之外,还有一类Query语句也是使用比较频繁的,那就是ORDERBY,GROUP BY以及DISTINCT这三类查询。考虑到这三类查询都涉及到数据的排序等操作,所以我将他们放在了一起,下面就针对这三类Query语句做基本的分析。 ORDER BY 的实现与优化在MySQL中,ORDERBY的实现有如下两种类型:一种是通过有序索引而直转载 2017-10-23 11:33:13 · 709 阅读 · 0 评论 -
MySQL JOIN原理
声明:文本出自M哥。先看一下实验的两张表:表comments,总行数28856表comments_for,总行数57,comments_id是有索引的,ID列为主键。以上两张表是我们测试的基础,然后看一下索引,comments_for这个表comments_id是有索引的,ID为主键。最近被公司某一开发问道JOIN了MySQL JOIN的问题,细转载 2017-10-23 10:15:43 · 245 阅读 · 0 评论 -
mysql 数据类型
1、整型MySQL数据类型含义(有符号)tinyint(m)1个字节 范围(-128~127)smallint(m)2个字节 范围(-32768~32767)mediumint(m)3个字节 范围(-8388608~8388607)int(m)4个字节 范围(-214转载 2017-10-09 12:31:45 · 161 阅读 · 0 评论 -
更新A表中的字段来自B表中的字段
更新A表中的字段来自B表中的字段update sp_student a inner join sp_professional p on a.professional_id=p.pid set a.category=p.category WHERE a.dpid=5;原创 2016-12-19 16:06:07 · 662 阅读 · 0 评论 -
两表关联条件,更新其中一表方法 You can‘t specify target table
update sp_class_mapping set c_status=2 WHERE cm_id in (SELECT cm_id from sp_student_second a right JOIN sp_class_mapping cm on cm.parent_id=a.st_id WHERE `status`=2 and c_status=1)错误提示就是说,不能先sel原创 2016-11-07 11:48:23 · 1128 阅读 · 1 评论 -
如何用MYSQL建立新表,并复制旧表的结构
今天 在做PHP 项目的时候,需要复制表结构,但后来找了一下,网上的都说得太复制。所以自己特地研究一下。用sql语建请的语法,这个非常简单,一般程序员应该看得懂,废话不多说了,看代码。CREATE TABLE 新表 select * FROM 旧表 where 1=2 例子:CREATE TABLE newtable select * FROM oldtable where 1=2原创 2015-11-30 16:07:10 · 938 阅读 · 0 评论