如何优化MySQL千万级大表,我写了6000字的深度解读mysqlhttps://baijiahao.baidu.com/s?id=1648004326110107346&wfr=spider&for=pc745 0 0 1年前
mysql8.0 安装问题汇总mysqlmysql8.0 坑## this authentication plugin is not supported MySQL8的默认密码认证方式使用caching_sha2_password,所以访问会提示this user requires mysql native password authentication。 解决方案:etc/my.cnf 添加如下修改 ``` [mysqld] default-authentication-plugin=mysql_native_password ``` ## 不能已root 启动 创建mysql账号和组 并授权 ``` grou1189 0 0 1年前
查看表大小和表数据条数mysql大表数据条数``` SELECT TABLE_NAME, CONCAT(TRUNCATE(data_length/1024/1024,2),' MB') AS data_size,table_rows FROM information_schema.tables WHERE TABLE_SCHEMA = 'xxx' AND TABLE_NAME IN ("xx","xxx"); ```937 0 0 1年前
未启动mysql,摘除大表mysqlmysql摘除大表 mysql大表卸载刚开完早会,就有同事就说服务不可以用。排查了一下日志,发现是mysql数据库不可用。于是上指定的服务器, 启动了一下mysql,提示空间不可用。于是又查看了一下磁盘占用情况,发现根目录下占用已100%。 于是问了一下同事,最近做了什么。(通常情况下,根目录磁盘占用不会增加很快,或者不会增加)。 同事说昨晚跑了1千万的数据入库。1千万的数据还不足以占用这么多,让同事确认了一下,多了一位数,是1亿条数据。 由于是测试环境,数据放在一个虚拟机上,空间分配的有限。 现在可以确认的是mysql的一张大表占用了过多的的磁盘空间,那我们就现将其移除掉,然后将mysql启动起来,先保证 测940 0 0 1年前
Waiting for table metadata lockmysqlmysql最近再给线上表添加索引时导致业务系统出现获取连接超时。查看数据库processlist,发现很多Waiting for table metadata lock。而且添加索引的DDl也是在Waiting for table metadata lock。 于是百度了一下,查到一些结论。 ``` 如果DDL执行前有未提交的DML,则会出现waiting for table metadata lock,且后续的DML都会出现 waiting for table metadata lock 直到未提交的DML结束。 ``` 5.6以后mysql支持了online DDL,不会阻塞读1024 0 0 1年前
mysql 多条记录插入或更新mysqlmysql duplicate一、前言 在日常业务开发中经常有这样一个场景,首先创建一条记录,然后插入到数据库;如果数据库已经存在同一主键的记录,则执行update操作,如果不存在,则执行insert操作; 这个操作可以在业务层做,也可以在数据库层面做; 业务层一般做法是先查询,如果不存在在插入,如果存在则更新,但是查询和插入不是原子性操作,在并发量比较高的时候,可能两个线程都查询某个记录不存在,所以会执行两次插入,然后其中一条必然会因为主键(这里说的主键不是递增主键)冲突而失败。 数据库层mysql中INSERT ... ON DUPLICATE KEY UPDATE就可以做这个事情,并且是原子性操作,本文就来讲899 0 0 1年前
mysql 分组取前N名mysqlmysql 分组取前n名 mysql 分组排序##表结构 ``` CREATE TABLE `tbl_agent_three_copy` ( `id` bigint(20) DEFAULT NULL, `uid` bigint(20) DEFAULT NULL, `article_id` bigint(20) DEFAULT NULL, `count` int(11) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ``` ## 查询每个用户分享数最多的前3篇文章 ``` SELECT * FROM ( SELECT a.ui934 0 0 1年前
mysql 手册mysqlmysql(一) 建表规约 【强制】表达是与否概念的字段,必须使用is_xxx的方式命名,数据类型是unsigned tinyint( 1表示是,0表示否)。 说明:任何字段如果为非负数,必须是unsigned。 正例:表达逻辑删除的字段名is_deleted,1表示删除,0表示未删除。 【强制】表名、字段名必须使用小写字母或数字,禁止出现数字开头,禁止两个下划线中间只出现数字。数据库字段名的修改代价很大,因为无法进行预发布,所以字段名称需要慎重考虑。 说明:MySQL在Windows下不区分大小写,但在Linux下默认是区分大小写。因此,数据库名、表名、字段名,都不允许出现任何大写字母,避免节1049 0 0 1年前
mysql 提取json 中字段mysqlmysql json mysql 提取json``` "studentId": "20", "subjects": {"id": "3", "marks": "58"} SELECT JSON_EXTRACT(json_field, '$.studentId'), JSON_EXTRACT(json_field, '$.http://subjects.id'), JSON_EXTRACT(json_field, '$.subjects.marks') FROM table_name; ```1847 1 0 1年前