mysql
叶戈尔
这个作者很懒,什么都没留下…
展开
-
MySQL中的隐式转换造成的索引失效
在mysql查询中,当查询条件左右两侧类型不匹配的时候会发生隐式转换,可能导致查询无法使用索引。官方的隐试转换说明:两个参数至少有一个是 NULL 时,比较的结果也是 NULL,例外是使用 <=> 对两个 NULL 做比较时会返回 1,这两种情况都不需要做类型转换 两个参数都是字符串,会按照字符串来比较,不做类型转换 两个参数都是整数,按照整数来比较,不做类型转换 十六进...原创 2020-01-16 18:38:16 · 551 阅读 · 0 评论 -
MySQL 按指定字段自定义列表排序
问题描述 大家都知道, mysql 中按某字段升序排列的 SQL 为 (以 id 为例, 下同):SELECT * FROM `MyTable` WHERE `id` IN (1, 7, 3, 5) ORDER BY `id` ASC降序排列的 SQL 为:SELECT * FROM `MyTable` WHERE `id` IN (1, 7, 3, 5) ORD...转载 2019-01-16 10:57:44 · 208 阅读 · 0 评论 -
SQL语句学习笔记
1.单个商品的规格数、最低价、最高价SELECT a.good_id,a.good_name,count(b.model_id) number,min(price) min_price,max(price) max_price FROM tt_goods a LEFT JOIN tt_goods_model b ON a.good_id = b.good_id GROUP BY a.good_i...原创 2018-09-29 16:47:02 · 173 阅读 · 0 评论 -
mysql之left join、right join、inner join
left join(左联接) 返回包括左表中的所有记录和右表中联结字段相等的记录 right join(右联接) 返回包括右表中的所有记录和左表中联结字段相等的记录inner join(等值连接) 只返回两个表中联结字段相等的行left join图例inner join图例right join图例left join/right join VS inner join...原创 2018-10-13 11:15:38 · 272 阅读 · 0 评论 -
MySQL常用函数
一、数学函数ABS(x) 返回x的绝对值BIN(x) 返回x的二进制(OCT返回八进制,HEX返回十六进制)CEILING(x) 返回大于x的最小整数值EXP(x) 返回值e(自然对数的底)的x次方FLOOR(x) 返回小于x的最大整数值GREATEST(x1,x2,...转载 2018-09-28 09:29:33 · 200 阅读 · 0 评论 -
MyISAM与InnoDB的索引差异
一,MyISAM的索引MyISAM的索引与行记录是分开存储的,叫做非聚集索引(UnClustered Index)。 其主键索引与普通索引没有本质差异: 有连续聚集的区域单独存储行记录 主键索引的叶子节点,存储主键,与对应行记录的指针 普通索引的叶子结点,存储索引列,与对应行记录的指针 画外音:MyISAM的表可以没有主键。 主键索引与普通索引是两...转载 2018-09-23 09:55:42 · 153 阅读 · 0 评论 -
为什么InnoDB并发如此高?
一、并发控制为啥要进行并发控制?并发的任务对同一个临界资源进行操作,如果不采取措施,可能导致不一致,故必须进行并发控制(Concurrency Control)。 技术上,通常如何进行并发控制?通过并发控制保证数据一致性的常见手段有: 锁(Locking) 数据多版本(Multi Versioning) 二、锁如何使用普通锁保证一致性?普通锁,...转载 2018-09-23 09:48:58 · 489 阅读 · 0 评论 -
数据库索引,到底是什么做的?
问题1. 数据库为什么要设计索引? 图书馆存了1000W本图书,要从中找到《架构师之路》,一本本查,要查到什么时候去?于是,图书管理员设计了一套规则:(1)一楼放历史类,二楼放文学类,三楼放IT类…(2)IT类,又分软件类,硬件类…(3)软件类,又按照书名音序排序…以便快速找到一本书。 与之类比,数据库存储了1000W条数据,要从中找到name=”shenjia...转载 2018-09-23 09:46:32 · 162 阅读 · 0 评论 -
mysql 字段类型
一、数据类型二、字符串类型三、时间类型四、复合类型复合类型MySQL 还支持两种复合数据类型 ENUM 和 SET,它们扩展了 SQL 规范。虽然这些类型在技术上是字符串类型,但是可以被视为不同的数据类型。一个 ENUM 类型只允许从一个集合中取得一个值;而 SET 类型允许从一个集合中取得任意多个值。ENUM 类型 ENUM 类型因为只允许在集合中取得一个值...原创 2018-09-20 16:57:37 · 296 阅读 · 0 评论 -
mysql主从同步延时解决
在从服务器上执行show slave status;可以查看到很多同步的参数,我们需要特别注意的参数如下:Master_Log_File: SLAVE中的I/O线程当前正在读取的主服务器二进制日志文件的名称Read_Master_Log_Pos: 在当前的主服务器二进制日志中,SLAVE中的I/O线程已经读取的位置Relay_Log_File: SQL线程当前正在读取和执行的中继日志文...转载 2018-08-21 19:22:46 · 666 阅读 · 0 评论 -
mysql 工作原理
刚开始接触一个新的事物的时候,我觉得很有必要从其工作原理入手,弄清楚这个东西的来龙去脉,为接下来的继续深入学习做好铺垫,掌握好其原理有助于我们从整体上来把握这个东西,并且帮助我们在排错过程中理清思路。接下来,还是从mysql的工作原理开始入手,下面先来一张经典的图: 上面的图就是mysql的内部架构,可以清楚的看到Mysql是由SQL接口,解析器,优化器,缓存,存储引擎组成的。 ...转载 2018-08-22 21:43:58 · 118 阅读 · 0 评论 -
MySQL索引背后的数据结构及算法原理
索引的本质MySQL官方对索引的定义为:索引(Index)是帮助MySQL高效获取数据的数据结构。提取句子主干,就可以得到索引的本质:索引是数据结构。我们知道,数据库查询是数据库的最主要功能之一。我们都希望查询数据的速度能尽可能的快,因此数据库系统的设计者会从查询算法的角度进行优化。最基本的查询算法当然是顺序查找(linear search),这种复杂度为O(n)的算法在数据量很大时显然是...转载 2018-08-26 12:51:37 · 464 阅读 · 0 评论 -
MySQL中MyISAM与InnoDB区别及选择
1、 存储结构MyISAM:每个MyISAM在磁盘上存储成三个文件。第一个文件的名字以表的名字开始,扩展名指出文件类型。.frm文件存储表定义。数据文件的扩展名为.MYD (MYData)。索引文件的扩展名是.MYI (MYIndex)。InnoDB:所有的表都保存在同一个数据文件中(也可能是多个文件,或者是独立的表空间文件),InnoDB表的大小只受限于操作系统文件的大小,一般为2GB。...转载 2018-08-26 12:02:23 · 129 阅读 · 0 评论 -
MySql配置优化
1.back_logback_log = 500要求 MySQL 能有的连接数量。当主要MySQL线程在一个很短时间内得到非常多的连接请求,这就起作用,然后主线程花些时间(尽管很短)检查连接并且启动一个新线程。back_log值指出在MySQL暂时停止回答新请求之前的短时间内多少个请求可以被存在堆栈中。只有如果期望在一个短时间内有很多连接,你需要增加它,换句话说,这值对到来的TCP/IP连接的...转载 2018-08-24 10:39:25 · 1417 阅读 · 0 评论 -
MySQL InnoDB中,乐观锁、悲观锁、共享锁、排它锁、行锁、表锁、死锁概念的理解
MySQL/InnoDB的加锁,一直是一个面试中常问的话题。例如,数据库如果有高并发请求,如何保证数据完整性?产生死锁问题如何排查并解决?我在工作过程中,也会经常用到,乐观锁,排它锁,等。于是今天就对这几个概念进行学习,屡屡思路,记录一下。注:MySQL是一个支持插件式存储引擎的数据库系统。本文下面的所有介绍,都是基于InnoDB存储引擎,其他引擎的表现,会有较大的区别。存储引擎查看M...转载 2018-08-24 10:36:05 · 4043 阅读 · 0 评论 -
mysql高可用方案对比
1. 概述我们在考虑MySQL数据库的高可用的架构时,主要要考虑如下几方面:Ø 如果数据库发生了宕机或者意外中断等故障,能尽快恢复数据库的可用性,尽可能的减少停机时间,保证业务不会因为数据库的故障而中断。Ø 用作备份、只读副本等功能的非主节点的数据应该和主节点的数据实时或者最终保持一致。Ø 当业务发生数据库切换时,切换前后的数据库内容应当一致,不会因为数据缺失或者数据不一...转载 2018-08-24 10:36:28 · 11573 阅读 · 0 评论 -
mysql tinyint和char(1)性能对比
在数据库设计的时候会遇到很多只需要0、1、2这种固定几个值的状态字段,基本上都建议设置为只占一字节的tinyint类型,有些觉得char(1)是一样,毕竟char(1)存储数字和字母时一个字符也只是占一个字节。mysql是用c++写的,而在c++中字符类型是存放对应ascii码的二进制到存储空间,而整型数字是直接存数字的二进制,虽然最终都是二进制存储,但是环节上有少许不同,同样在msyql查找...转载 2018-08-24 10:37:14 · 14676 阅读 · 0 评论