MySQL
胡老汉
专注于.net core下微服务开发
展开
-
C#MySql.Data报错Guid should contain 32 digits with 4 dashes (xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx)
记录一次深坑bug,调试修改三个小时。程序增删查改一套写好了,开始运行测试。额,查看日志吧!连接数据库报错:Guid should contain 32 digits with 4 dashes (xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx)翻译:Guid应该包含32位数字和4个破折号(xxxxxxxx-xxxx-xxxx- xxxxxxxxxxxxxx)我搜索了一下我项目中并没有使用GUID呀。于是乎,各种Google,百度,改代码,测试代码。原创 2020-06-30 21:30:10 · 3379 阅读 · 0 评论 -
开发部门,代码 Code Review 实践方案
Code Review(代码审查)是软件开发中的最佳实践之一,可以有效提高整体代码质量,及时发现代码中可能存在的问题。包括像Google、微软这些公司,Code Review都是基本要求,代码合并之前必须要有人审查通过才行。Code Review 好处团队知识共享的角度一个开发团队中,水平有高有低,每个人侧重的领域也有不同。怎么让高水平的帮助新人成长?怎么让大家都对自己侧重领域之外的知...原创 2020-04-15 19:08:22 · 718 阅读 · 0 评论 -
MySQL开发,你需要知道的一些规范
一、基础规范 表存储引擎必须使用InnoDB 解读:支持事务、行级锁、并发性能更好、CPU及内存缓存页优化使得资源利用率更高表字符集默认使用utf8,必要时候使用utf8mb4解读:(1)通用,无乱码风险,汉字3字节,英文1字节(2)utf8mb4是utf8的超集,有存储4字节例如表情符号时,使用它禁止使用存储过程,视图,触发器,Event解读:(1)...原创 2020-04-15 18:46:46 · 511 阅读 · 0 评论 -
mysql group_concat的截断问题
show variables like 'group_concat_max_len';默认1024,超过就会截断解决办法:set group_concat_max_len=2048;通常拼接的内容不要过长,设置适合的长度,如果拼接内容很长的话,建议在程序中拼接...原创 2019-12-31 17:56:44 · 624 阅读 · 0 评论 -
07 | 行锁功过:怎么减少行锁对性能的影响?
在上一篇文章中,我跟你介绍了 MySQL 的全局锁和表级锁,今天我们就来讲讲 MySQL 的行锁。MySQL 的行锁是在引擎层由各个引擎自己实现的。但并不是所有的引擎都支持行锁,比如 MyISAM 引擎就不支持行锁。不支持行锁意味着并发控制只能使用表锁,对于这种引擎的表,同一张表上任何时刻只能有一个更新在执行,这就会影响到业务并发度。InnoDB 是支持行锁的,这也是 MyISAM 被 Inn...转载 2019-11-18 19:01:25 · 264 阅读 · 0 评论 -
06 | 全局锁和表锁 :给表加个字段怎么有这么多阻碍?
今天我要跟你聊聊 MySQL 的锁。数据库锁设计的初衷是处理并发问题。作为多用户共享的资源,当出现并发访问的时候,数据库需要合理地控制资源的访问规则。而锁就是用来实现这些访问规则的重要数据结构。根据加锁的范围,MySQL 里面的锁大致可以分成全局锁、表级锁和行锁三类。今天这篇文章,我会和你分享全局锁和表级锁。而关于行锁的内容,我会留着在下一篇文章中再和你详细介绍。这里需要说明的是,锁的设计...转载 2019-11-18 19:01:18 · 189 阅读 · 0 评论 -
05 | 深入浅出索引(下)
在上一篇文章中,我和你介绍了 InnoDB 索引的数据结构模型,今天我们再继续聊聊跟 MySQL 索引有关的概念。在开始这篇文章之前,我们先来看一下这个问题:在下面这个表 T 中,如果我执行 select * from T where k between 3 and 5,需要执行几次树的搜索操作,会扫描多少行?下面是这个表的初始化语句。mysql> create ta...转载 2019-11-18 19:01:10 · 225 阅读 · 0 评论 -
04 | 深入浅出索引(上)
提到数据库索引,我想你并不陌生,在日常工作中会经常接触到。比如某一个 SQL 查询比较慢,分析完原因之后,你可能就会说“给某个字段加个索引吧”之类的解决方案。但到底什么是索引,索引又是如何工作的呢?今天就让我们一起来聊聊这个话题吧。数据库索引的内容比较多,我分成了上下两篇文章。索引是数据库系统里面最重要的概念之一,所以我希望你能够耐心看完。在后面的实战文章中,我也会经常引用这两篇文章中提到的知...转载 2019-11-18 19:00:59 · 494 阅读 · 0 评论 -
03 | 事务隔离:为什么你改了我还看不见?
提到事务,你肯定不陌生,和数据库打交道的时候,我们总是会用到事务。最经典的例子就是转账,你要给朋友小王转 100 块钱,而此时你的银行卡只有 100 块钱。转账过程具体到程序里会有一系列的操作,比如查询余额、做加减法、更新余额等,这些操作必须保证是一体的,不然等程序查完之后,还没做减法之前,你这 100 块钱,完全可以借着这个时间差再查一次,然后再给另外一个朋友转账,如果银行这么整,不就乱了么...转载 2019-11-18 19:00:48 · 169 阅读 · 0 评论 -
02 | 日志系统:一条SQL更新语句是如何执行的?
前面我们系统了解了一个查询语句的执行流程,并介绍了执行过程中涉及的处理模块。相信你还记得,一条查询语句的执行过程一般是经过连接器、分析器、优化器、执行器等功能模块,最后到达存储引擎。那么,一条更新语句的执行流程又是怎样的呢?之前你可能经常听 DBA 同事说,MySQL 可以恢复到半个月内任意一秒的状态,惊叹的同时,你是不是心中也会不免会好奇,这是怎样做到的呢?我们还是从一个表的一条更新...转载 2019-11-18 19:00:27 · 161 阅读 · 0 评论 -
01 | 基础架构:一条SQL查询语句是如何执行的?
这是专栏的第一篇文章,我想来跟你聊聊 MySQL 的基础架构。我们经常说,看一个事儿千万不要直接陷入细节里,你应该先鸟瞰其全貌,这样能够帮助你从高维度理解问题。同样,对于 MySQL 的学习也是这样。平时我们使用数据库,看到的通常都是一个整体。比如,你有个最简单的表,表里只有一个 ID 字段,在执行下面这个查询语句时:mysql> select * from T where ID=10...转载 2019-11-18 19:00:19 · 177 阅读 · 0 评论 -
mysql查看执行sql语句的记录日志
1、使用processlist,但是有个弊端,就是只能查看正在执行的sql语句,对应历史记录,查看不到。好处是不用设置,不会保存。-- use information_schema;-- show processlist;或者:-- select * from information_schema.`PROCESSLIST` where info isnot null;2、开...转载 2019-07-26 13:03:24 · 20321 阅读 · 0 评论 -
如何查看Mysql event事件是否启用
查看mysql是否启用事件show variables like 'event_scheduler';或select @@event_scheduler;如果没有开启(off),则需要开启它。set global event_scheduler=on;或set global event_scheduler=1;如果事件还是无法运行,则尝...原创 2019-07-13 15:38:16 · 1714 阅读 · 0 评论 -
Mysql常用数据类型
Mysql常用数据类型数值类型 Bit(M) 位类型。M指定位数,默认值1,范围1-64 Bool,Boolean 使用0或1表示真或假 ...原创 2019-05-07 17:30:50 · 1014 阅读 · 0 评论 -
mysql中查询分析器Explain的type的解释
导语:很多情况下,有很多人用各种select语句查询到了他们想要的数据后,往往便以为工作圆满结束了。这些事情往往发生在一些学生亦或刚入职场但之前又没有很好数据库基础的小白身上,但所谓闻道有先后,只要我们小白好好学习,天天向上,还是很靠谱的。当一个sql查询语句被写出来之后,其实你的工作只完成了一小半,接下来更重要的工作是评估你自己写的sql的质量与效率。mysql为我们提供了很有用的辅助...原创 2019-04-28 11:47:31 · 1146 阅读 · 0 评论 -
深入浅析Mysql联合索引原理 之 最左匹配原则。
前言之前在网上看到过很多关于mysql联合索引最左前缀匹配的文章,自以为就了解了其原理,最近面试时和大牛交流中,发现遗漏了些东西,这里自己整理一下这方面的内容。最左前缀匹配原则在mysql建立联合索引时会遵循最左前缀匹配的原则,即最左优先,在检索数据时从联合索引的最左边开始匹配,示例:CREATE TABLE `student` ( `Id` int(11) unsign...原创 2019-04-28 11:38:46 · 26957 阅读 · 16 评论 -
Mysql 数据库脚本更改规范
1、SQL文件每个月形成一个文件,以日期开头,便于发版执行(如果文件不存在创建一个,文件名格式为:201805.sql)。2、SQL文件在做数据结构修改前,必须在开头单独起一行备注此次修改做的业务操作和日期。例如: #=========2018/05/20 添加产品优惠券日期字段,jira #5247 ============。3、SQL文件在做数据结构操作前,必须判断是否已经存...原创 2018-07-21 10:11:20 · 1959 阅读 · 0 评论