Mysql
文章平均质量分 73
Mysql
lxw1844912514
这个作者很懒,什么都没留下…
展开
-
明明加了唯一索引,为什么还是产生重复数据?
前言前段时间我踩过一个坑:在mysql8的一张innodb引擎的表中,加了唯一索引,但最后发现数据竟然还是重复了。到底怎么回事呢?本文通过一次踩坑经历,聊聊唯一索引一些有意思的知识点。1.还原问题现场前段时间,为了防止商品组产生重复的数据,我专门加了一张防重表。问题就出在商品组的防重表上。具体表结构如下:CREATETABLE`product_group_unique`(`id`bi......转载 2022-08-29 08:10:26 · 672 阅读 · 0 评论 -
MAC下MySQL初始密码忘记怎么办
第一步:点击系统偏好设置->最下边点MySQL,在弹出页面中,关闭服务点击关闭 stop mysql server 按钮,但是一直不起作用,关闭不了,kill 方式杀死进程时,提示“进程已完成”但MySQL服务仍然可用;看网友说活动监视器有监护进程(你们可以试试),但我没找该MySQL进程,因为我是通过 start 开启的进程,所以通过 stop 方式杀掉的进程#启动MySQL 服务sudo /usr/local/mysql/support-files/mysql.serve.原创 2022-03-20 13:37:35 · 1680 阅读 · 0 评论 -
MySQL的ON DUPLICATE KEY UPDATE语句
有这么一种场景:查找记录 如果存在:更新字段 如果不存在:插入字段 如果使用ORM来表述的话,则比较长,而且会出现并发问题,即多个提交时,假设设置了唯一索引的情况下,会发生数据冲突,然后 就会隔三差五收到错误:duplicate key ‘xxx’。因此使用MySQL提供的INSERT ... ON DUPLICATE KEY UPDATE语句,这是MySQL的扩展语法,因此也就意味着,使用了这个语句之后, 数据库基本上就被绑定在MySQL上了,不过没有关系,一般谁会轻易更换数据库呢?..转载 2022-03-09 15:25:00 · 1643 阅读 · 0 评论 -
MySQL中count(字段) ,count(主键 id) ,count(1)和count(*)的区别
注:下面的讨论和结论是基于 InnoDB 引擎的。首先要弄清楚 count() 的语义。count() 是一个聚合函数,对于返回的结果集,一行行地判断,如果 count 函数的参数不是 ...转载 2020-07-05 17:21:46 · 9622 阅读 · 1 评论 -
100G内存下,MySQL查询200G大表会OOM么?
我的主机内存只有100G,现在要全表扫描一个200G大表,会不会把DB主机的内存用光?逻辑备份时,可不就是做整库扫描吗?若这样就会把内存吃光,逻辑备份不是早就挂了?所以大表全表扫描,看起来...转载 2022-02-11 08:00:00 · 604 阅读 · 0 评论 -
必须了解的MySQL三种日志
前言大家有没有想过为什么MySQL数据库可以实现主从复制,实现持久化,实现回滚的呢?其实关键在于MySQL里的三种log,分别是:binlogredo logundo log这三种log也...原创 2021-04-21 19:55:40 · 936 阅读 · 0 评论 -
MySQL主从复制数据同步,常见问题总结
一、问题描述:当我们配置好MySQL主主同步时,是可以实现主主同步,但是重启机器后或者其他原因导致MySQL无法同步了。二、Slave两个关键进程mysql replication 中sl...原创 2021-04-26 11:58:00 · 1003 阅读 · 0 评论 -
mysql 索引中的USING BTREE 的意义
索引是在存储引擎中实现的,因此每种存储引擎的索引都不一定完全相同,并且每种存储引擎也不一定支持所有索引类型。根据存储引擎定义每个表的最大索引数和最大索引长度。所有存储引擎支持每个表至少16个索引,总索引长度至少为256字节。大多数存储引擎有更高的限制。MySQL中索引的存储类型有两种:BTREE和HASH,具体和表的存储引擎相关;MYISAM和InnoDB存储引擎只支持BTR...原创 2019-04-28 11:58:00 · 12396 阅读 · 0 评论 -
深入了解 B-Tree 和 B+Tree 的区别
B-TreeB-Tree是为磁盘等外存储设备设计的一种平衡查找树。系统从磁盘读取数据到内存时是以磁盘块(block)为基本单位的,位于同一个磁盘块中的数据会被一次性读取出来,而不是需要什...原创 2020-12-02 11:30:00 · 1122 阅读 · 0 评论 -
Mysql错误:#1054 - Unknown column ‘id‘ in ‘field list‘ 解决办法
第一次用mysql,在插入数据时,竟然报这样的错误,#1054 - Unknown column 'id' in 'field list'看似字段id不存在于表中,于是找了好一会原因,结果是字段id前面多了一个空格,去掉空格就可以正常运行了。当时用mysql-gui-tools-5.0-r17-win32.msi见的表结构。很悲剧!~...原创 2018-03-27 12:39:00 · 55601 阅读 · 2 评论 -
关于mysql 出现 1264 Out of range value for column 错误的解决办法
今天给客服恢复mysql数据的时候。本来测试好的数据。但是到了客户那里却死活不干活了。老报错!1INSERT INTO ka_tan4 set num='716641385999', username='admin',adddate='1353078270',rate='2',sum_m='500',tjrenid='1259'...原创 2018-09-05 14:44:00 · 16449 阅读 · 3 评论 -
SQL去重的三种方法汇总
在使用SQL提数的时候,常会遇到表内有重复值的时候,比如我们想得到 uv (独立访客),就需要做去重。在 MySQL 中通常是使用 distinct 或 group by子句,但在支持窗口...转载 2021-12-02 08:00:00 · 1196 阅读 · 0 评论 -
为什么不建议在 MySQL 中使用 UTF-8?
在往MySQL存入emoji表情????????时,一直出错,无法导入。后来找到办法 -- 通过把utf8改成utf8mb4就可以了,并没有深究.嗯?他本身不就是utf8编码么!那我当时还改个...转载 2021-12-01 08:00:00 · 613 阅读 · 0 评论 -
一次SQL查询优化原理分析(900W+数据,从17s到300ms)
有一张财务流水表,未分库分表,目前的数据量为9555695,分页查询使用到了limit,优化之前的查询耗时16 s 938 ms (execution: 16 s 831 ms, fet...转载 2020-03-19 12:00:00 · 751 阅读 · 0 评论 -
Navicat for MySQL和Navicat Premium之间的区别
首先两款软件都可以用来管理数据库链接MySQL和MariaDB相对于新手或者前端工程师使用Navicat for MySQL就够了,功能相对于Navicat Premium比较少Navicat for MySQL是一套管理和开发MySQL或MariaDB的理想解决方案,支持单一程序,可同时连接到MySQL和MariaDB。这个功能齐备的前端软件为数据库管理、开发和维护提供了直观而强大的图...原创 2019-03-05 16:10:00 · 3401 阅读 · 0 评论 -
详解-脏读、幻读与不可重复读
最近在读 《MySQL 技术内幕 InnoDB 存储引擎》,里面提到的各种概念都很新鲜,以前听说过脏读、幻读、不可重复读,但是对于概念不甚了解,于是查了一下,这里做个笔记。数据库事务特征...转载 2020-10-17 13:22:46 · 2641 阅读 · 0 评论 -
数据库DSN是什么
数据库建立好之后,要设定系统的 DSN(数据来源名称),才能让网页可以知道数据库所在的位置以及数据库相关的属性。使用DSN的好处还有,如果移动数据库档案的位置,或是换成别种类型的数据库,只要重新设定 DSN 就好了,不需要去修改原来使用的程序。说明编辑Data Source Name (DSN) [1] 的PDO命名惯例为:PDO驱动程序的名称,后面为一个冒号,再后面...原创 2018-11-06 22:09:00 · 18789 阅读 · 0 评论 -
MySQL常见面试题:什么是主从延时?如何降低主从延时?
背景高并发这个阶段,肯定是需要做读写分离的,啥意思?因为实际上大部分的互联网公司,一些网站,或者是 app,其实都是读多写少。所以针对这个情况,就是写一个主库,但是主库挂多个从库,然后从多...转载 2021-11-18 08:10:00 · 834 阅读 · 0 评论 -
详解mysql 主从复制原理
简介:什么是主从复制,如何实现读写分离,看这篇你就懂了!思维导图前言在很多项目,特别是互联网项目,在使用MySQL时都会采用主从复制、读写分离的架构。为什么要采用主从复制读写分离的架构?如...转载 2021-04-27 08:25:00 · 812 阅读 · 1 评论 -
Mysql引擎介绍及InnoDB逻辑存储结构
对于后端开发来说,数据库是我们日常开发中几乎都会使用到的。而且对于许多大型应用来说,往往数据库就是限制其性能的瓶颈所在。在以前的大多数时间里面,对数据库的认知,始终停留在一个比较浅的层面里...原创 2021-04-09 08:25:00 · 790 阅读 · 1 评论 -
2020最新版MySQL数据库面试题(三)
点击上方“ 码农编程进阶笔记 ”,选择“置顶或者星标”文末有干货,每天定时与您相约!六种关联查询交叉连接(CROSS JOIN)内连接(INNER JOIN)外连接(LEFT JOIN/...转载 2020-04-02 08:30:00 · 6166 阅读 · 1 评论 -
MySQL的查询需要遍历几次B+树,理论上需要几次磁盘I/O?
一、前言这个问题是博主去年面试的时候被大佬问过的问题,当时也不大清楚里面的原理,硬着头皮回答的,当然,最终面试也没过,哈哈。最近刚好研究了这块的一些东西,就有种恍然大悟的感觉,这里分享给...原创 2019-12-21 07:50:00 · 3780 阅读 · 1 评论 -
MySQL中创建外键的错误:1215 Cannot add the foreign key constraint
引言: MySQL中经常会需要创建父子表之间的约束,这个约束是需要建立在主外键基础之上的,这里解决了一个在创建主外键约束过程中碰到的一个问题。1. 问题的提出创建两个表:product:商品表sealer:供货商表 相应的SQL如下: product:DROP TABLE IF EXISTS `product`;CREATE T...转载 2019-09-09 20:26:18 · 2990 阅读 · 2 评论 -
解决导入MySQL数据库提示“Unknown character set: ‘utf8mb4‘“错误
今天老左在准备迁移公司一个客户的网站到另外一台服务器中,根据正常的操作备份最新的网页文件和导出数据库,然后在新服务器中创建站点和数据库wget迁移进去解压。因为数据库比较小,所以直接用PHPMyAdmin工具在线导入,但是看到有错误提示"#1115- Unknown character set: 'utf8mb4'"。第一、错误提示看来是因为数据库版本的问题...原创 2017-08-30 12:12:00 · 15243 阅读 · 0 评论 -
MySQL敏感数据加密及解密
点击上方“ 码农编程进阶笔记 ”,选择“置顶或者星标”文末有干货,每天定时与您相约!大数据时代的到来,数据成为企业最重要的资产之一,数据加密的也是保护数据资产的重要手段。本文主要在结合学...转载 2020-04-08 08:30:00 · 2496 阅读 · 1 评论 -
mysql中update和select结合使用
在遇到需要update设置的参数来自从其他表select出的结果时,需要把update和select结合使用,不同数据库支持的形式不一样,在mysql中如下:update A inner join(select id,name from B) c on A.id = c.id set A.name = c.name;根据AB两个表的id相同为条件,把A表的name修改为B的sql语句就如上所示...转载 2021-09-10 15:30:03 · 3957 阅读 · 0 评论 -
MySQL将查询的结果作为update更新的数据,且在原字段数据后 CONCAT拼接(lej)
update user INNER JOIN (SELECT GROUP_CONCAT('',id)AS app_id_str FROM `app` WHERE `admin_id` = '用户B的id' AND `status` > '0' AND `is_deleted` = '0' LIMIT 0,1000 ) app_id_strs set app_id= CONCAT(app_id,',',app_id_str) WHERE uid=用户A的id;释义:1.查询app表中...原创 2021-09-09 11:15:33 · 7426 阅读 · 0 评论 -
mysql 往表中某个字段的字符串后追加字符串
update 表名 set 字段名=CONCAT(字段名,"需添加的值")WHERE 条件列如:update np_order set customer_remark=CONCAT(customer_remark,"sgja那里能的可能")WHERE order_id='1'np_order :表名customer_remark 字段名称where 后指定条件...转载 2021-09-08 17:59:59 · 1615 阅读 · 0 评论 -
DBA整理的万字详解MySQL性能优化,值得收藏!
说起MySQL的查询优化,相信大家积累一堆技巧:不能使用SELECT *、不使用NULL字段、合理创建索引、为字段选择合适的数据类型….. 你是否真的理解这些优化技巧?是否理解其背后的工作...转载 2021-08-15 09:27:00 · 695 阅读 · 0 评论 -
mysql 设置外键约束SET FOREIGN_KEY_CHECKS=1
问题描述:Mysql中如果表和表之间建立的外键约束,则无法删除表及修改表结构解决方法:在Mysql中取消外键约束: SET FOREIGN_KEY_CHECKS=0;然后将原来表的数据导出到sql语句,重新创建此表后,再把数据使用sql导入,然后再设置外键约束: SET FOREIGN_KEY_CHECKS=1;...转载 2021-08-11 09:54:23 · 2758 阅读 · 0 评论 -
2021年最新PHP 面试、笔试题汇总(一)
读在前面:面向对象编程和面向对象设计的五个基本原则「SOLID」单一职责原则(Single Responsibility Principle)开放封闭原则(Open Closed Pri...原创 2021-01-10 08:15:00 · 4566 阅读 · 1 评论 -
MySQL为什么用B+树,而不用B树?
1.b+树只有叶子节点存数据 b树是每个节点都存数据 在相同数据量下b树的高度更高,所以查询效率更低2.b树每一层存的是数据+索引;b+树是除了叶子节点存的是数据+索引以外,其余节点只存索引,所以在相同数据量的情况下,b树的高度会比b+ 树高很多...原创 2021-06-30 15:09:44 · 1244 阅读 · 0 评论 -
详细讲解mysql 主从复制原理
1.注意mysql replication 中slave机器上有两个关键的进程,死一个都不行,一个是slave_sql_running,负责自己的slave mysql进程。一个是Slave_IO_Running,负责与主机的io通信.三,常见问题故障案例:主从同步报错Fatal error: The slave I/O thread stops because master and slave have equal MySQL server UUIDS场景...原创 2021-04-25 11:52:03 · 4319 阅读 · 0 评论 -
MySQL数据库优化技巧大全
一. MySQL优化三大方向① 优化MySQL所在服务器内核(此优化一般由运维人员完成)。② 对MySQL配置参数进行优化(my.cnf)此优化需要进行压力测试来进行参数调整。③ 对SQL语句以及表优化。二.MySQL参数优化1:MySQL 默认的最大连接数为 100,可以在 mysql 客户端使用以下命令查看mysql> show variables like 'max_connections';2:查看当前访问Mysql的线程mysql> show process原创 2021-04-22 10:41:04 · 873 阅读 · 0 评论 -
MySQL 重置 root 密码以及修改密码时报错password字段不存在
一.MySQL 重置 root 密码关闭 MySQL 服务器:service mysql stop进入目录,cd /usr/local/mysql/bin 以安全模式启动 MySQL./mysqld_safe --skip-grant-tables &注意:可能你的系统没有 safe_mysqld 程序(Windows 或 Ubuntu操作系统) ,可以使用 mysqld:mysqld --skip-grant-tables &.原创 2021-04-20 14:43:15 · 2713 阅读 · 0 评论 -
PHP实现拼车平台数据表
#=====================拼车平台======================#用户表DROP TABLE IF EXISTS `car_users`;CREATE TABLE `car_users` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT, `name` varchar(100) NOT NULL DEFAULT '' COMMENT '昵称', `password` varchar(60) NOT NULL D.原创 2021-01-24 23:06:12 · 764 阅读 · 0 评论 -
MySQL 5.7的原生JSON数据类型使用
新增测试用表:CREATE TABLE lnmp ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `category` JSON, `tags` JSON, PRIMARY KEY (`id`));新增数据:INSERT INTO `lnmp` (category, tags) VALUES ('{"id": 1, "name": "lnmp.cn"}', '[1, 2, 3]');INSERT转载 2021-01-09 15:12:00 · 661 阅读 · 0 评论 -
myisam和innodb 删除一条记录后,再次添加后,最大记录值
原创 2019-02-28 13:18:00 · 1081 阅读 · 2 评论 -
Mysql5.7版本中数据表字段可用的类型
前言为什么会有这个总结,因为在测试Mysql的字符串函数时发现,char和varchar有些不同,网上搜索一番发现了各种char、varchar、nvarchar类型的对比,还有一些奇奇怪怪的这里就不说了,然后我就开始了对这几种类型字符串的测试,接着就悲剧了,测试多次之后发现创建为nvarchar类型的字段居然是varchar类型的,再查询官方文档后发现,当前版本(5.7.21)的Mysql根本就没有nvarchar类型的字段,白白浪费了时间,所以要把Mysql支持的字段列举在这里,方便后面查找...转载 2020-12-25 15:03:16 · 815 阅读 · 1 评论 -
MySQL相关 - 死锁的发生和避免
在我们使用锁的时候,有一个问题是需要注意和避免的,我们知道,排它锁有互斥的特性。一个事务或者说一个线程持有锁的时候,会阻止其他的线程获取锁,这个时候会造成阻塞等待,如果循环等待,会有可能造成死锁。这个问题我们需要从几个方面来分析,一个是锁为什么不释放,第二个是被阻塞了怎么办,第三个死锁是怎么发生的,怎么避免。我们且看正文部分。:正文死锁锁的释放与阻塞回顾:锁什么时候释放?事务结束(commit,rollback);客户端连接断开。如果一个事务一直未释放锁,其他事务会被阻塞多.转载 2020-12-21 18:18:16 · 704 阅读 · 0 评论