数据库从删库到跑路
文章平均质量分 94
数据库
居十四
君子性非异也, 善假于物也.
展开
-
数据库优化-排序篇 (order by)
数据库优化-排序篇 (order by)背景日常开发工作中, 经常使用order by对结果集进行排序, 但是对其原理和具体实现可能不是很了解. 这样无法进行有效的分析和针对性优化.因此, 我写下本篇文章介绍一下 order by的基本原理和一些工作中常见的问题. 带着问题去学习, 效率会更高, 更有趣.数据准备因为在工作中使用pg多一些, 所以文中的数据库选择了 PostgreSQL 11.14 64-bit造一些测试数据, 可以参考: pg 快速造1000w测试数据CREATE TABLE原创 2022-02-27 11:34:10 · 3693 阅读 · 0 评论 -
pg实现并发相互喜欢
pg实现并发相互喜欢背景在极客时间上阅读到15 | 答疑文章(一):日志和索引相关问题一章时, 有一个很有趣的并发问题. 作者给出了mysql版本的答案.因为平时pg用的比较多, 所以使用pg进行实现了一下.具体问题类似探探类的交友软件, 用户Bob对喜欢的人Alice, 可以点击喜欢按钮, 此时Bob会关注Alice,如果, Alice也喜欢Bob, 构成了Bob, Alice相互喜欢, 则成为好友.设计上有3个表, users, likers, friends.当用户Bob 喜欢Alic原创 2022-02-13 11:47:00 · 570 阅读 · 0 评论 -
数据库优化-事务篇
数据库优化-事务篇说明背景: 日常开发中, 性能的瓶颈往往在于 IO, 尤其是数据库. 了解如何优化数据库, 提高数据库的性能和请求响应速度是有必要的.因此, 我打算梳理和总结数据库优化的相关内容.本篇为事务篇, 讲解数据库事务相关的优化. 梳理事务相关的知识点, 并结合实际场景进行讲解.文章中的实例都是以 PG 数据库为例的, 其它数据库语法可能稍有不同.准备数据:create table public.test ( id serial, val varchar(20) null,原创 2022-02-01 19:11:33 · 1695 阅读 · 0 评论 -
postgresql 表分区
postgresql 表分区背景一个大表查询性能往往不高, 其原因在于数据加载 data load,扫描数据 table scans ,内存交换 memory swap 等等操作的时间成本会随着数据量的增加而上升.从 PG 11 开始, 支持较为简洁的声明表分区. 为提高大表性能提供了一种解决方案.什么是表分区表分区(Partitioning) 指的是: 将一个逻辑上的大表拆分成多个物理上的小表. 是一种单体数据库表的水平分表.表分区能带来以下好处:在特定情形下, 查询性能的大幅度提升. 尤原创 2021-12-26 18:10:09 · 2388 阅读 · 1 评论 -
ORA-600[kglLockOwnersListDelete] 解决方案
ORA-600[kglLockOwnersListDelete] 解决方案背景oracle 版本 Windows 64-bit Version 11.2.0.1.0在服务高峰期, 会出现崩溃问题. 整个数据库卡死, 只能通过重启解决.查询 oracle 的 alert 日志, 发现一些端倪, 可能是 kglLockOwnersListDelete 导致的;<msg time='20xx-xx-24T11:56:30.618+08:00' org_id='oracle' comp_id='rd原创 2021-12-11 10:25:54 · 576 阅读 · 0 评论 -
计算机中的字符编码(Unicode UTF-8 GBK)
计算机中的字符编码(Unicode UTF-8 GBK)计算机的字符都是在哪里定义的答: 在字符集里定义的;每个国家都有自己的语言, 每种语言又对应有很多不同的字符;像英语只需要 100 多个字符就够了, 而中文则有非常多的字符(常用的 3000+个);在计算机使用之初, 只需要支持英文就好;所以早在 1963 年就有了 ASCII 码;它里面定义了英文字母,数字和一些字符;但随着计算机的流行, 中国也开始使用起来了计算机;此时, 就必须要考虑中文字符了;因此, 中国在 1980 年发原创 2021-01-30 20:42:10 · 1591 阅读 · 0 评论 -
数据库索引 - 索引 - 下
数据库索引 - 索引 - 下本节总结一些索引使用上的优化很多内容来自 数据库索引设计与优化使用索引一定比全表扫描快吗答: 不一定使用一个不恰当的索引可能会导致比全表扫描更差的性能;我们假设有一张 product 表;id 是主键select * from productwhere id = 1000我们可以看到数据库, 会选择使用索引Index Scan using product_pkey on product (cost=0.43..8.45 rows=1 width=原创 2021-01-17 10:59:58 · 152 阅读 · 0 评论 -
数据库索引 - 索引 - 中
数据库索引 - 索引 - 中本节, 将深入地了解一下索引;什么是 B-tree, B+tree什么是 B-tree ?什么是 B+tree ?符号 - 只是用于分割. 所以 B-tree 并不是读作 B减树, 而是应该读作 B树这些定义和区别, 在网上有很多优秀的文章大家可以看看, 我这里就不赘述了;推荐阅读:wiki B-treewiki B+tree以 B tree 和 B+ tree 的区别来分析 mysql 索引实现使用 B-tree 索引的好处是什么B-trees 支原创 2021-01-01 19:27:59 · 123 阅读 · 0 评论 -
数据库索引 - 索引 - 上
数据库索引 - 索引 - 上索引这一章节, 我想讨论一些有趣的事情.大表如何加索引在大表上创建一个索引将花费大量的时间; 默认情况下, 在创建的索引时, PostgreSQL 允许读数据 (select);但是, 写数据的操作(insert, update , delete)会被阻塞, 知道索引创建完毕;在生产环境下这是无法接受的;那么, 在生产环境下, 怎么添加索引呢?数据库提供了一种可以并发创建索引的方法create index concurrently index_name on t原创 2020-12-19 11:36:59 · 275 阅读 · 2 评论 -
数据库索引 - 索引类型
数据库索引 - 索引类型索引类型为什么索引有很多种答: 在不同的场景下, 应该选择不同的索引;pg 数据库提供了非常多的索引B-treeHashGiSTSP-GiSTGINBRIN等等每一种索引都有不同的算法, 它们适用于不同的类型的查询;默认情况下, 会创建B-tree索引, 因为它适用于多数情况;推荐阅读这篇文章讲得特别好, 推荐大家去看看PostgreSQL 9种索引的原理和应用场景我这里就只写 B-tree, hash, gin 这三个最常用的;B-tree原创 2020-11-15 17:20:41 · 305 阅读 · 0 评论 -
数据库索引 - 索引简介
数据库索引 - 索引简介本节很多内容来自 pg数据库的官方文档索引简介索引是什么索引是一种常用提高数据库性能的方式. 索引能够帮助数据库快速地找到特定的数据行;但是索引也会增加整个数据库系统的 开销 (overhead),所以应该明智地使用它们。为什么要有数据库索引答: 提高查询效率我们在数据准备中, 创建了 product 表;SELECT * FROM product WHERE id = 12311如果没有主键的索引, 数据库不得不扫描整个 product 表, 一行一行地找;原创 2020-11-15 17:18:55 · 209 阅读 · 0 评论 -
数据库索引 - 数据存储
数据库索引 - 数据存储数据存储数据存放在哪里当然是存放在硬盘中了;但是, 我们怎么找到具体数据库文件的物理地址呢?首先, 我们要先查找到表的oid, 然后再去数据库存储数据的目录;select oid,relfilenode from pg_class where relname='product';图一安装pg的时候, 会让你指定数据存放的地址;我的是 D:\env\pg\data;所以, 我需要找的地址是:D:\env\pg\data\base\16394\16502如何存储原创 2020-11-15 17:16:59 · 1343 阅读 · 0 评论 -
pg 快速造1000w测试数据
数据库索引 - 数据准备带着问题去学习! 学习起来才有趣;下面的每一个小节, 都由若干个问题组成;希望这些问题能够给大家带来一定的帮助;同时, 也希望大家提出好的问题, 一起分享!为了避免一篇文章过长; 我分成了多个章节!数据准备为了更好的说明和演示;我们需要事前造一些数据;一个 有1000w 数据的产品表:-- Table: public.product-- DROP TABLE public.product;CREATE TABLE public.product( id原创 2020-11-15 17:16:34 · 686 阅读 · 0 评论 -
00-MySQL的执行流程
MySQL的执行流程本文章绝大部分来源极客时间的丁奇大神的MySQL实战专栏总览(Outine)一图胜千言.上图很好地展示了MySQL的执行流程.下面,详细介绍一下.(图是从专栏中拿来用的,读书人的事,怎么能说偷呢!)MySQL受到Oracle的很多影响.其中执行流程和它类似.MySQL有服务端(server)和客户端(client)连接器(connnector),客户端...原创 2019-07-21 10:31:31 · 259 阅读 · 0 评论 -
01-MySQL事务的隔离
MySQL的事务谈到事务就离不开ACIDAtomaticity 原子性Consistency 一致性Isolation 隔离性Durability 持久性原子性,我们都比较熟悉.典型的例子就银行转账,不能别人转了钱了,但账户上没有扣除!那可就是血亏了!一致性 知乎上一篇讲的很好的文章隔离性,就是多个事务之间的事情了,也是我们今天的主题持久性,...原创 2019-07-27 20:14:07 · 117 阅读 · 0 评论 -
02-MySQL索引
索引数据库的表就如同一本厚厚的字典.字典里面有我们想要查询的数据.但是呢,一页一页地翻,然后去找到相应的内容.真是太漫长了.而索引呢,就如同字典的中的目录.通过索引我们可以快速地定位想要查询的内容.然后呢,当然就去找咯!索引的数据结构类型索引的数据结构有三种.hash表有序数组B+树hash表hash表大家都很熟悉了.根据某一个条件,然后把数据尽可能地均匀地分布.然后在不...原创 2019-08-03 22:48:08 · 279 阅读 · 0 评论