浏览模式: 普通 | 列表
分类: Mysql | < | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | >
MySQL如果频繁的修改一个表的数据,那么这么表会被锁死。造成假死现象。
解决办法:
首先执行:show full processlist; 列出当前的操作process,一般会看到很多waiting的process,说明已经有卡住的proces了,我们要杀死这些process!!
show full processlist;


再执行:kill processid; processid表示process的id,比如kill 3301,就会将id为3301的process杀死。
kill processid;


使用 kill 将所有的 id 杀死。然后重启MySQL,一般就会解决了。如果还不行,那应该是不可能的吧。。。
一般情况下都不需要重启MySQL:
net stop mysql //停止MySQL
...

阅读全文…

强制mysql服务器更新日志

[ 2020-08-26 15:20:43 | 作者: admin ]
经常命令运行了,但是日志没有实时记录下来,用下面命令强制刷新日志
mysqladmin –u root –p flush-logs
用管理员身份打开cmd.exe,进到mysql的bin目录


D:\Program Files\mysql-5.7.13\bin>mysqld install
Service successfully installed.
D:\Program Files\mysql-5.7.13\bin>net start mysql
MySQL 服务正在启动 .
MySQL 服务无法启动。
服务没有报告任何错误。
请键入 NET HELPMSG 3534 以获得更多的帮助。

报错了,打开系统日志提示:
Fatal error: Can’t open and lock privilege tables: Table ‘mysql.user’ doesn’t existFor more information, see Help and Support Center at
...

阅读全文…
问题:mysql语句中union和union all 的区别
答案:union会过滤掉两个结果集中重复的行,而union all不会过滤掉重复行。

注意事项:union不能与order by 合用,需要在数组中重新排序下

范例:
SELECT aid,title FROM article UNION ALL SELECT bid,title FROM blog
p.s. 在mysql5中,varchar(20)就表示可以放20个字(数字英文或汉字),无论编码是UTF8,GBK,都可以放20个。mysql会自动分配存储字节空间

如果是汉字,GBK编码下1汉字=2byte, varchar(20)会占用40字节,UTF8编码1汉字=3byte, varchar(20)会占用60字节,UTF8mb4编码1汉字=4byte, varchar(20)会占用80字节

有道面试题:若一张表中只有一个字段VARCHAR(N)类型,utf8编码,则N最大值为多少?
先明白计算的一些规则限制

mysql 4.0版本以下,varchar(20),指的是20字节,如果存放UTF8汉字时,只能存6个(每个汉字3字节)
mysql 5.0版本以上,varchar(20),指的是20字符,无论存放的是数字、字母还是U...

阅读全文…

mysqli_connect()函数

[ 2019-08-22 17:32:35 | 作者: admin ]
今天改旧程序到mysqli,
mysqli_connect( "localhost:9999",$username,$pwd,$dbname );
然后一直提示
mysqli_connect HY000/2005 Unknown MySQL server host localhost:9999

查资料才意识到,mysqli_connect() 是把端口作为第5个参数单独列出的,OMG,不记函数的下场就是浪费时间
mysqli_connect ([ string $host = ini_get("mysqli.default_host") [, string $username = ini_get("mysqli.default_user") [, string $passwd = ini_get("mysqli.default_pw")
...

阅读全文…
p.s. 方法就是先写好普通left join语句,然后把结果作为临时表,进行group by [重复键]
select * from (
原语句...
) as tmp_table GROUP BY tmp_table.mid


用到SQL中的LEFT JOIN时,在右表中存在多条记录,即一对多的情况时, 直接使用left join会出现一对多的结果
attachments/201908/14_161218_20180708160131293.jpg



发现一对多关联然后全部查询出来了。
现在只需要改查询商品的最后一张图片,入商品1对应的商品图片3。
方案1:
先按图片降序排序,然后按商品id进行分组,即得每一个商品的最后一张图片信息。
SELECT * FROM
...

阅读全文…
核心表 2亿多数据量,索引+数据大小超80G,需要对该表结构作调整——drop两字段,然后新增5字段
在测试服务器上测试drop 两个字段,花费了30多分钟,并且内存占用率持续99.9%,其中3个cpu core占用80%以上(硬件16核,50G内存);虽然两列是drop掉了,但这么长的时间难以接受,基于此查看了官方文档中表结构修改处理流程以查找 更佳解决办法:

http://dev.mysql.com/doc/refman/5.1/zh/sql-syntax.html#alter-table

以下为原文引用:

“ALTER TABLE运行时会对原表进行临时复制,在副本上进行更改,然后删除原表,再对新表进行重命名。在执行ALTER TABLE时,其它用户可以阅读原表,但是对表的更新和修改的操作将被延迟,直到新表生成为止。新表生成后,这些更新和修改信息会自动转移到新表上。

注意,如果您在执行ALTER
...

阅读全文…