
数据库
茴香豆的茴有六种写法
这个作者很懒,什么都没留下…
展开
-
mysql中tinyint、smallint、int、bigint的区别
tinyint从 -2^7 (-128) 到 2^7 - 1 (123) 的整型数据。存储大小为 1 个字节。unsigned 是从 0 到 255 的整型数据。所以建表的时候 只能是tinyint(3),哪怕你建tinyint(100),他最大还是3位这么多。smallint从 -2^15 (-32,768) 到 2^15 - 1 (32,767) 的整型数据。存储大小为 2 个字节。unsigned 是从 0 到 65535 的整型数据。所以建表的时候 只能是smallint(5),哪怕你转载 2020-05-17 17:46:32 · 656 阅读 · 0 评论 -
MySQL全文索引-fulltext
MySQL 5.6 之前的版本只有MyISAM存储引擎支持全文索引,5.6 及之后的版本,InnoDB 才开始支持。全文索引相对于like %这种模糊查询效率更高,查询方式更多样,查询结果也更准确。在全文检索领域,全文索引功能非常有用,比如博客类网站,可以对文章标题,文章内容创建全文索引,用户可以根据关键词搜索想要的文章。1、创建全文索引能够创建全文索引的字段类型必须是char,varchar,text等这类字符文本类型。创建一个带有全文索引的表:CREATE TABLE articles (id转载 2020-05-17 17:31:58 · 614 阅读 · 0 评论 -
redis基本数据结构之ZSet
介绍:ZSet数据结构类似于Set结构,只是ZSet结构中,每个元素都会有一个分值,然后所有元素按照分值的大小进行排列,相当于是一个进行了排序的链表。如果ZSet是一个链表,而且内部元素是有序的,在进行元素插入和删除,以及查询的时候,就必须要遍历链表才行,时间复杂度就达到了O(n),这个在以单线程处理的Redis中是不能接受的。所以ZSet采用了一种跳跃表的实现。这个实现有点类似于Kafka存...转载 2020-03-13 11:29:40 · 466 阅读 · 0 评论 -
redis(内存模型 五种数据类型应用场景 集群方案)
redis内存模型redis大致内存模型如下图---单机版的redis最多只能支持大概几万的QPS,缓存一般来说都是用来支撑读高并发的,写的请求是比较少的,要想支持更高的并发量,可将redis做成读写分离的主从架构。如下图所示:架构做成主从架构,一主多从,主负责写,并且将数据同步复制到其他slave节点,从节点负责读。所有的读请求全部走从节点。加假如原来一台机器只能支撑5万QP...原创 2019-04-08 20:34:04 · 3874 阅读 · 0 评论 -
Redis之事务实现
Redis中的事务提供了一种将多个命令请求打包,然后一次性、顺序性执行多个命令的机制,并且在事务指向期间,服务器不会中断事务而改去执行其他客户端的命令请求,它会将事务中的所有命令都执行完毕,然后才去处理其他客户端的请求。Redis通过MULTI,EXEC,WATCH等命令来实现事务功能。事务首先以一个MULTI命令开始,然后将多个命令放入事务中,最后由EXEC命令将这个事务提交给服务器执行:...转载 2019-10-28 10:51:59 · 380 阅读 · 0 评论 -
深入理解mysql四种隔离级别及底层实现原理(MVCC和锁)
1) 锁的分类Shared Locks(共享锁/S锁)若事务T对数据对象A加上S锁,则事务T只能读A;其他事务只能再对A加S锁,而不能加X锁,直到T释放A上的S锁。这就保证了其他事务可以读A,但在T释放A上的S锁之前不能对A做任何修改。Exclusive Locks(排它锁/X锁)若事务T对数据对象A加上X锁,则只允许T读取和修改A,其它任何事务都不能再对A加任何类型的锁,直到T释放A...转载 2019-08-19 09:23:36 · 2691 阅读 · 1 评论 -
乐观锁和悲观锁
目录一、基本概念二、实现方式(含实例)1、CAS(Compare And Swap)2、版本号机制三、优缺点和适用场景1、功能限制2、竞争激烈程度四、面试官追问:乐观锁加锁吗?五、面试官追问:CAS有哪些缺点?1、ABA问题2、高竞争下的开销问题3、功能限制一、基本概念乐观锁和悲观锁是两种思想,用于解决并发场景下的数据竞争问题。乐观...转载 2017-02-21 21:15:56 · 3766 阅读 · 0 评论 -
深入学习Redis(2):持久化
目录一、Redis高可用概述二、Redis持久化概述三、RDB持久化1. 触发条件1) 手动触发2) 自动触发2. 执行流程3. RDB文件4. 启动时加载5. RDB常用配置总结四、AOF持久化1. 开启AOF2. 执行流程1) 命令追加(append)2) 文件写入(write)和文件同步(sync)3) 文件重写(rewrite...转载 2016-11-10 23:28:36 · 2651 阅读 · 0 评论 -
彻底搞清楚分布式数据库
首先,“分布式”:是从业务的角度的概念。"分布式”是从业务角度出发的:即当我们想着“注册”模块需要更新或者出问题了,那么我们不希望它影响存量用户的“登陆”和“下单”模块,这个时候,我们多希望他们不在一起多好,那么当我们真的这么做了,将各个业务模块都分开,ok,那这就是“分布式”了。从数据库的发展历程来看,像什么数据库冷备热备、主从、双活、多活、集群等等,都与“分布式”不相关,与业务不相关,都...原创 2019-09-23 15:11:53 · 609 阅读 · 0 评论 -
Redis 线程模型
文件事件处理器(file event handler) Redis 基于 Reactor 模式开发了自己的网络事件处理器: 这个处理器被称为文件事件处理器(file event handler) 文件事件处理器使用 I/O 多路复用(multiplexing)程序来同时监听多个套接字, 并根据套接字目前执行的任务来为套接字关联不同的事件处理器。 当被监听的套接字准...转载 2019-09-25 11:12:27 · 268 阅读 · 0 评论 -
如何处理redis集群中的hot Key
一般对于单实例的redis或者一主一备的redis来说,不需要考虑hot key的问题。但是随着业务量的上升,redis集群也自然而然的会成为一个选择。hot key的概念当使用redis集群来作为缓存的时候,如果在业务上碰到大促,或者正好有一个非常热的帖子的时候,对应的缓存会被频繁访问。而这个缓存会落在redis集群的同一台集群上,导致数据频繁的访问同一台机器,造成集群性能的不均衡。这个就...原创 2019-07-12 14:30:10 · 3433 阅读 · 0 评论 -
深入理解MySQL的四种隔离级别及加锁实现原理
一、首先什么是事务?事务是应用程序中一系列严密的操作,所有操作必须成功完成,否则在每个操作中所作的所有更改都会被撤消。也就是事务具有原子性,一个事务中的一系列的操作要么全部成功,要么一个都不做。事务的结束有两种,当事务中的所有步骤全部成功执行时,事务提交。如果其中一个步骤失败,将发生回滚操作,撤消事务开始时的所有操作。二、事务的ACID事务具有四个特征:原子性( Atomicity...转载 2019-08-18 22:55:22 · 3421 阅读 · 2 评论 -
轻松理解MYSQL MVCC 实现机制
1. MVCC简介1.1 什么是MVCCMVCC是一种多版本并发控制机制。1.2 MVCC是为了解决什么问题? 大多数的MYSQL事务型存储引擎,如,InnoDB,Falcon以及PBXT都不使用一种简单的行锁机制.事实上,他们都和MVCC–多版本并发控制来一起使用. 大家都应该知道,锁机制可以控制并发操作,但是其系统开销较大,而MVCC可以在大多数情况下代替行级锁,使用...转载 2019-08-18 22:49:53 · 898 阅读 · 0 评论 -
Mysql优化
1.关于inner join,left join,right join和子查询1)能用inner join就不要用left join或者right join ,inner join是等值连接。 left join,right join 是外连接,返回的行数比较少。2)外连接性能比子查询快,尽量用外连接来代替子查询。3)使用join的时候,应该用小的结果驱动大的结果(left join左边表...原创 2017-07-19 14:16:47 · 2192 阅读 · 0 评论 -
数据库相关
-----------------------------------------------------------------------------------数据库一对一、一对多、多对多设计---------------------------------------------------------------------------------------转载 2017-05-17 11:03:31 · 2109 阅读 · 0 评论 -
MySQL学习记录
1.distinct只返回不同的值2.select prod_name from products limit 5,5返回从第五行开始的五行。3.select prod_id,prod_price,prod_name from products order by prod_price,prod_name;首先按价格,再按名称排序3.select prod_id,pr原创 2017-07-16 11:01:38 · 2029 阅读 · 0 评论 -
Mysql将a表相应字段插入B表
MYSQL数据库从A表把数据插入B表如果2张表的字段一致,并且希望插入全部数据,可以用这种方法:Code:INSERT INTO 目标表 SELECT * FROM 来源表;比如要将 articles 表插入到 newArticles 表中,则是:Code:INSERT INTO newArticles SELECT * FROM articles;如果只希望导原创 2017-10-25 15:35:34 · 1929 阅读 · 0 评论 -
centos7安装mysql
1.卸载系统自带的Mariadb [root@localhost ~]# rpm -qa|grep mariadb // 查询出来已安装的mariadb [root@localhost ~]# rpm -e --nodeps 文件名 // 卸载mariadb,文件名为上述命令查询出来的文件 2.下载mysql的repo源wget http://...原创 2017-11-09 20:50:44 · 322 阅读 · 0 评论 -
mysql explain使用分析
建立两张表user和order用于演示explain的使用CREATE TABLE `user_info` ( `id` BIGINT(20) NOT NULL AUTO_INCREMENT, `name` VARCHAR(50) NOT NULL DEFAULT '', `age` INT(11) DEFAULT NULL, PRIMARY...原创 2019-04-05 10:23:30 · 3969 阅读 · 0 评论 -
数据库分库分表
一 为什么要分库分表1.单表数据量过大,会极大的影响sql的执行性能2.磁盘容量有限3.单表无法承受高并发。一般一个库最多支撑并发量2000(并发量为1000的时候就要考虑扩容)二 常见的分库分表中间件sharding-jdbc:当当开源的,属于client层方案。确实之前用的还比较多一些,因为SQL语法支持也比较多,没有太多限制,而且目前推出到了2.0版本,支持分库分表...原创 2019-06-20 15:07:41 · 3464 阅读 · 0 评论 -
mysql探究之null与not null
相信很多用了mysql很久的人,对这两个字段属性的概念还不是很清楚,一般会有以下疑问:1、我字段类型是not null,为什么我可以插入空值2、为毛not null的效率比null高3、判断字段不为空的时候,到底要 select * from table where column <> '' 还是要用 select * from table where column is...转载 2017-01-06 14:56:20 · 2531 阅读 · 0 评论 -
where,having与 group by连用的区别
select 列a,聚合函数 from 表名 where 过滤条件 group by 列a having 过滤条件group by 字句也和where条件语句结合在一起使用。当结合在一起时,where在前,group by 在后。即先对select xx from xx的记录集合用where进行筛选,然后再使用group by 对筛选后的结果进行分组 使用having字句对分组后的结果进行筛选...转载 2017-11-26 10:35:34 · 531 阅读 · 0 评论 -
深入学习MySQL事务:ACID特性的实现原理
事务是MySQL等关系型数据库区别于NoSQL的重要方面,是保证数据一致性的重要手段。本文将首先介绍MySQL事务相关的基础概念,然后介绍事务的ACID特性,并分析其实现原理。MySQL博大精深,文章疏漏之处在所难免,欢迎批评指正。目录一、基础概念1. 逻辑架构和存储引擎2. 提交和回滚3. ACID特性二、原子性1. 定义2. 实现原理:undo log三...转载 2016-12-03 19:12:50 · 3632 阅读 · 0 评论