![](https://img-blog.csdnimg.cn/2021010511210718.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
数据库
文章平均质量分 65
数据库
逍遥大俠
这个作者很懒,什么都没留下…
展开
-
MySQL中int、bigint、smallint 和 tinyint 的区别与长度的含义
bigint从 -2^63 (-9223372036854775808) 到 2^63-1 (9223372036854775807) 的整型数据(所有数字)。存储大小为 8 个字节。bigint已经有长度了,在mysql建表中的length,只是用于显示的位数int从-2^31 (-2,147,483,648)到 2^31 – 1 (2,147,483,647)的整型数据(所有数字)。存储大小为 4 个字节。int 的 SQL-92 同义字为integer。smallint从 -2^15 (-原创 2021-10-14 16:02:43 · 779 阅读 · 0 评论 -
MySQL中varchar和char的区别,varchar(50)中50的含义
varchar和char的区别varchar与char的区别就是,char是一种固定长度的类型,varchar则是一种可变长度的类型尽可能的使用varchar代替char,因为首先变长字段存储空间小,可以节省存储空间,其次对于查询来说,在一个相对较小的字段内搜索效率显然要高些。varchar(50)表示的含义varchar(50)中50的涵义为最多存放50个字符,varchar(50)和varchar(200)存储hello字符串所占空间一样,但后者在排序时会消耗更多内存,因为order by原创 2021-10-14 15:59:10 · 4349 阅读 · 0 评论 -
MySQL分页查询优化
一、前言分页查询的时候,我们一般使用SELECT * FROM user LIMIT 1000,10;当表中的数据非常大,达到百万级别,查询速度非常的慢,一般我们有下面两种方法提升查询效率方法1:SELECT * FROM user WHERE id >= (SELECT id FROM user LIMIT 1000,1) LIMIT 1;方法2:SELECT * FROM user a JOIN (SELECT id FROM user LIMIT 1000,10) b ON a原创 2021-07-19 22:46:14 · 173 阅读 · 0 评论 -
MySQL根据某个字段判断新增或更新
有一个 USER表,字段有:id、username、password、email、phone我们需要开发一个创建用户接口,username唯一,判断username是否存在,如果存在,就更新,不存在,就新增看一下正常代码// 创建用户public void createUser(User user) { User userInfo = this.getUserByName(user.getUsername()); if (null != userInfo) { use原创 2021-07-16 15:16:36 · 4234 阅读 · 0 评论 -
EXPLAIN各个字段是什么意思
mysql使用explain xxx可以分析sql语句的性能,本文详细总结一下每个字段的意义MYSQL 5.6.3以前只能EXPLAIN SELECT; MYSQL5.6.3以后就可以EXPLAIN SELECT,UPDATE,DELETE概述首先看一个简单的示例mysql> explain select * from staff;+----+-------------+-------+------+---------------+------+---------+------+------原创 2021-07-09 13:58:53 · 748 阅读 · 2 评论 -
小白也会用的SQL优化工具推荐
1. SOAR/SOAR-WEB强烈推荐小米开源的SQL优化和改写的自动化工具跨平台支持(支持 Linux, Mac 环境,Windows 环境理论上也支持,不过未全面测试)目前只支持 MySQL 语法族协议的 SQL 优化支持基于启发式算法的语句优化支持复杂查询的多列索引优化(UPDATE, INSERT, DELETE, SELECT)支持 EXPLAIN 信息丰富解读支持 SQL 指纹、压缩和美化支持同一张表多条 ALTER 请求合并支持自定义规则的 SQL 改写安装步骤推原创 2021-07-06 18:06:30 · 8105 阅读 · 5 评论 -
redis实现商品销量排行榜
前言需要统计某个商家商品的实时销量排行,可以使用SQL语句,根据销量字段排序,但是这个方法需要进行全表扫描,当数据量非常大的时候,效率很低redis自带的数据结构zset是有序列表,可以结合redis更加高效的得到实时排行数据数据准备1. 表准备CREATE TABLE `mall` ( `id` bigint(20) NOT NULL, `name` varchar(20) DEFAULT NULL COMMENT '商品名称', `stock` bigint(20) DEFAULT原创 2021-01-15 21:50:21 · 2753 阅读 · 0 评论 -
2020字节跳动数据库面试题及答案(二)—— NoSQL部分
本文答案整理为原创,转载请说明出处文章目录redis 的底层数据结构有哪些redis 中的 SDS 和 C 语言中的字符串有什么区别,优点是什么redis 中的字典是如何实现的,如何解决冲突和扩容redis 的跳表的使用场景是什么,可以实现一下吗redis 缓存穿透,缓存击穿,缓存雪崩,热点数据集中失效redis 的淘汰策略,来写一下 LRU 吧redis 的持久化方式,RDB 和 AOF 分别的使用场景redis 如何处理事务redis 为什么那么快?redis 是单线程为什么还那么快?redis .原创 2021-01-13 00:21:31 · 3651 阅读 · 2 评论 -
2020字节跳动数据库面试题及答案
文章目录数据库三范式分别说一下范式和反范式的优缺点Mysql 数据库索引。B+ 树和 B 树的区别为什么 B+ 树比 B 树更适合应用于数据库索引,除了数据库索引,还有什么地方用到了(操作系统的文件索引)聚簇索引和非聚簇索引前缀索引和覆盖索引介绍一下数据库的事务Mysql 有哪些隔离级别Mysql 什么情况会造成脏读、不可重复读、幻读?如何解决Mysql 在可重复读的隔离级别下会不会有幻读的情况,为什么?Mysql 事务是如何实现的Binlog 和 Redo log 的区别是什么,分别是什么用?谈一谈 MV原创 2020-12-31 10:51:53 · 13393 阅读 · 3 评论 -
MySQL可重复读级别会不会造成幻读
一、定义在《高性能MySQL》一书中,是这样描述的根据书上的描述,MySQL的可重复读隔离级别通过MVCC机制,解决了幻读的问题,所以不会造成幻读二、测试本文默认你已经知道以下的命令1. 查询当前会话隔离级别SELECT @@tx_isolation;2. 设置当前会话隔离级别set SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ;3. 查询正在进行中的事务SELECT * FROM information_schema.IN原创 2020-12-11 20:36:08 · 3503 阅读 · 6 评论