数据库
面试题--数据库
fhxyryxc
这个作者很懒,什么都没留下…
展开
-
DENSE_RANK
力扣178MYSQL实现排名函数RANK,DENSE_RANK和ROW_NUMBER转载 2021-01-25 18:29:17 · 96 阅读 · 0 评论 -
join
笛卡尔积:CROSS JOIN内连接:INNER JOIN左连接:LEFT JOIN右连接:RIGHT JOIN外连接:OUTER JOIN,MySQL不支持OUTER JOIN,但是我们可以对左连接和右连接的结果做UNION操作来实现SELECT *from sys_user_role b left join sys_user a USING(user_id)-- on a.user_id=b.user_idMysql Join算法原理Simple Nested-Loop Jo转载 2020-12-30 11:23:38 · 169 阅读 · 1 评论 -
h2
h2数据库配置H2是一个开源的嵌入式(非嵌入式设备)数据库引擎,它是一个用Java开发的类库,可直接嵌入到应用程序中,与应用程序一起打包发布,不受平台限制。三种连接模式都支持内存、持久化到文件两种数据存储方式。三种模式对同时开启的数据库数量和数据库连接数量没有限制。连接方式描述嵌入式模式本地JDBC连接服务器模式JDBC或基于tcp/ip的ODBC远程连接混合模式本地或远程同时连接##依赖<dependency> <groupId&g原创 2020-12-18 09:57:32 · 111 阅读 · 0 评论 -
锁
表级锁table-level lockingMyISAM采用表级锁开销小,加锁快不会出现死锁锁定粒度大,发出锁冲突的概率最高,并发度最低行级锁row-level lockingInnoDB支持行级锁和表级锁,默认为行级锁。开销大,加锁慢会出现死锁锁定粒度最小,发生锁冲突的概率最低,并发度也最高InnoDB是基于索引来完成行锁InnoDB对于行的查询使用next-key lockselect * from tab_with_index where id = 1 for upda转载 2020-12-03 14:09:18 · 62 阅读 · 0 评论 -
EXPLAIN
idid相同时,执行顺序由上至下如果是子查询,id的序号会递增,id值越大优先级越高,越先被执行id如果相同,可以认为是一组,从上往下顺序执行;在所有组中,id值越大,优先级越高,越先执行select_type查询的类型取值说明simple简单SELECT,不使用UNION或子查询等primary复杂查询中最外层的selectunion在union关键字随后的selelctdependent unionunion result从union.转载 2020-11-18 23:18:11 · 68 阅读 · 0 评论 -
MYISAM前缀压缩索引
myisam使用前缀压缩来减少索引的大小,从而让更多的索引可以放入内存中,默认只压缩字符串,但通过参数配置也可以对整数做压缩。索引块中的第一个值是perform,第二个是performance,那么第二个值的前缀压缩后存储的是类似7,ance,这样的形式。可以在create table语句中指定pack_keys参数来控制myisam表的索引压缩方式:PACK_KEYS [=] {0 | 1 | DEFAULT}0: 表示关闭索引压缩1: 表示开启数字和字符串压缩default:表示只压缩超转载 2020-11-18 19:35:19 · 174 阅读 · 0 评论 -
PROCESSLIST
显示用户正在运行的线程。如果是root帐号,能看到所有用户的当前连接。如果是其他普通帐号,则只能看到自己占用的连接。showprocesslist只能列出当前100条。如果想全部列出,可以使用SHOW FULL PROCESSLIST命令。show PROCESSLIST;show full processlist;select * from information_schema.PROCESSLIST;STATEkey说明Opening tables正尝试打开一转载 2020-11-18 18:54:38 · 156 阅读 · 0 评论 -
have_query_cache
MySQL查询缓存保存查询返回的完整结果。当查询命中该缓存,会立刻返回结果,跳过了解析,优化和执行阶段。一个被频繁更新的表如果被应用了QC,可能会加重数据库的负担,而不是减轻负担。对一些涉及频繁更新的表的SQL语句加上SQL_NO_CACHE关键词来对其禁用CACHE。如果查询语句中包含任何的不确定函数则不会缓存(如NOW()),因为在执行这个查询之后,MySQL会禁止缓存该查询。两个sql必须完全一致才会导致cache命中。区分大小写,空格等。prepared statement永远不会cach转载 2020-11-18 18:23:05 · 1086 阅读 · 1 评论 -
thread_cache_size
show variables like 'thread%';keyvalue说明thread_cache_size当客户端断开之后,服务器处理此客户的线程将会缓存起来以响应下一个客户而不是销毁(前提是缓存数未达上限)。如果是短连接,适当设置大一点。如果是长连接,可以设置成小一点,一般在50-100左右。thread_concurrency10应设为CPU核数的2倍thread_handlingone-thread-per-connection(默认值)是指针转载 2020-11-18 18:05:34 · 1428 阅读 · 0 评论 -
slow_query_log
show variables like 'slow_query%';字段value说明slow_query_logON慢查询开启状态slow_query_log_file/var/lib/mysql/instance-1-slow.log慢查询日志存放的位置long_query_time10查询超过多少秒才记录log_queries_not_using_indexesON记录所有没有利用索引的查询(平时不要开启)mysqldumpslow是m转载 2020-11-18 17:30:53 · 115 阅读 · 0 评论 -
B Tree
m阶B树树中的每个节点最多有m个孩子除了根节点和叶子结点外,其他节点最少含有 (m+1)/2 个孩子如果根节点不是叶子结点,则根节点最少2个孩子所有叶子节点都在同一层,并不带任何信息除了叶子结点,节点含有关键字属性,数目范围是 [M/2 - 1,M-1],即关键字个数 = 孩子个数 - 1。关键字:K[1], K[2], …, K[M-1],且K[i] < K[i+1],即关键字是有序的。如果经常访问的数据离根节点很近,而B树的非叶子节点存储关键字数据的地址,所以这种数据检索的时候会转载 2020-06-03 22:10:36 · 339 阅读 · 0 评论 -
SQL执行顺序
NoSQL非关系型数据库不需要写一些复杂的 SQL 语句,其内部存储方式是以 key-value 的形式存在非关系型数据库不需要经过 SQL 的重重解析,所以性能很高非关系型数据库的可扩展性比较强,数据之间没有耦合性,遇见需要新加字段的需求,就直接增加一个 key-value 键值对即可关系型数据库能够支持复杂的 SQL 查询,能够体现出数据之间、表之间的关联关系;关系型数据库也支持事务,便于提交或者回滚。架构MYSQL客户端连接器,完成 TCP 握手mysql -u 用户名 -p 密码转载 2020-06-03 21:59:24 · 121 阅读 · 0 评论 -
MYSQL搜索引擎
内存文件数据库速度快,会丢失频繁IO,永久保存永久保存,SQL语句查询三大范式1NF:每列是原子的,不可分割2NF:属性完全依赖主键3NF:消除传递依赖BCNF:消除对主码子集的依赖搜索引擎MYISAMINNODB不支持外键、事务外键、事务、行锁表锁,不会死锁行锁,MVCC,会死锁表定义,表数据,表索引表定义,表数据和表索引在一个文件可以无主键自动新增一列6字节隐藏主键索引记录的是data的物理地址索引记录的是...转载 2020-06-03 16:53:40 · 285 阅读 · 0 评论