Oracle:select 或 inactive 会话语句产生锁?
最近发生的几起 enq: TX - row lock contention 等待事件很怪,通过 blocking session id 查看,不是语句是 select,就是会话是 inactive 的。实验准备工作进入 hr 用户,同时查看会话 id,下面会称为会话 38SQL> select userenv('sid') from d
Oracle:RAC 进程简介
GCS 全局缓存后台进程全局缓存主要服务于数据块(PCM 资源)。GCS 负责维护全局缓冲存储区内的缓存一致性,包括:数据块的状态,数据块的位置,数据块的传输等。GCS 确保一个实例在任何时刻想修改一个数据块时,都可获得一个全局锁资源,从而避免另一个实例同时修改该块的可能性。进行修改的实例将拥有块的当前版本(包括已提交的和未提交的事物更改)以及块的一致性拷贝。如果另一个实例也请求该块,那么 GCS
MySQL:Redo & binlog
示例mysql> create table T(ID int primary key, c int); mysql> update T set c=c+1 where ID=2;RedoInnoDB 的 redo log 是固定大小的,比如可以配
PostgreSQL:LISTEN | NOTIFY
pg 中的 Listen/Notify 是用来提供客户端之间通过服务段进行消息通信的机制。listen:监听消息通道unlisten:取消先前的监听notify:发送消息到消息通道中pg_notify():与 notify 命令的功能相同,也可以发送消息到消息同道中。pg_listening_channels():调用此函数可以查询当前 session 已注册了哪些消息监听。LISTENLISTE
PostgreSQL:模式匹配操作符
三种模式匹配的方法传统 SQL 的 LIKE 操作符。SQL99 新增的 SIMILAR TO 操作符POSIX 风格的正则表达式LIKE 操作符%:代表 0 个活任意个字符_:代表任意一个字符\:用于转译 % 和 _ESCAPE:使用指定成其他的字符\\:连续两个转义符去除其特殊的意义。~~:等效于 LIKE~~*:等效于 ILIKE!~~:等效于 NOT LIKE!~~*:等效于 NOT IL
PostgreSQL:RULE
语法postgres=# \h create rule Command: CREATE RULE Description: define a new rewrite rule Syntax: CREATE [ OR REPLACE ] RUL
PostgreSQL:EXPLAIN
EXPLAIN 命令常用语句预生成执行计划EXPLAIN sq真实执行计划EXPLAIN ANALYZE sq输出详细内容EXPLAIN (ANALYZE on, TIMING on, VERBOSE on, BUFFERS on, COSTS on) sql
PostgreSQL:参数简介
该文件是 PostgreSQL 的参数文件,该文件中配置了 PostgreSQL 启动所读取的初始化参数,如果没有指定初始化参数,使用默认的初始化参数启动。类似于 Oracle 中的初始化参数文件。分类internal:这些参数是只读参数,其中有些参数是 postgres 程序写死的,或者使用一些不同的编辑选项确定的;有些参数是数据库实例初始化时就确定了的,之后就不能再改变此参数值了。这类参数值不
PostgreSQL:锁
锁问题脏读:一个事务可以读到另一个事务中未提交的数据不可重复读:在一个事务没有结束时,另外一个事务也访问该同一数据集合,并做了 DML 操作。因此,在第一个事务两次读数据之间,读到的数据可能是不一样的幻读(丢失更新):一个事务的更新操作会被另一个事务的更新操作所覆盖,从而导致数据的不一致。隔离级别READ UNCOMMITTED允许事务查看其他事务所进行的未提交更改允许“脏”读、 不可重复读和虚读
PostgreSQL:事务
ACIDA(Atomicity)—原子性:整个数据库事务是不可分割的工作单位。只有使事务中所有的数据库操作都执行成功,才算整个事务成功。事务中任何一个 SQL 语句执行失败,已经执行成功的 SQL 语句也必须回滚,退回到执行事务前的状态。C(Consistency)—一致性:将数据库从一种状态转变为下一种一致的状态。在事务开始之前和事务结束以后,数据库的完整性约束没有被破坏。I(Isolation
PostgreSQL:权限管理
权限说明SELECT:允许从指定表,视图或序列的任何列或列出的特定列进行SELECT。也允许使用COPY TO。在UPDATE或DELETE中引用现有列值也需要此权限。对于序列,此权限还允许使用currval函数。对于大对象,此权限允许读取对象。INSERT:允许将新行INSERT到指定的表中。如果列出了特定列,则只能在INSERT命令中为这些列分配(因此其他列将接收默认值)。也允许COPY FR
PostgreSQL:用户角色管理
创建用户/角色创建好用户(角色)之后需要连接的话,还需要修改 2 个权限控制的配置文件(pg_hba.conf、pg_ident.conf)。并且创建用户(user)和创建角色(role)一样,唯一的区别是用户默认可以登录,而创建的角色默认不能登录。创建用户和角色的各个参数选项是一样的。语法CREATE USER/ROLE name [ [ WIT
PostgreSQL:INDEX
索引是加速搜索引擎检索数据的一种特殊表查询。简单地说,索引是一个指向表中数据的指针。分类B-tree:最常用的索引,B-tree 索引适合处理等值查询和范围查询Hash:只能处理简单的等只查询GiST:不是一种单独的索引类型,而是一种架构,可以在这种架构上实现很多不同的索引策略。GiST 索引定义的特定操作符可以用于特定索引策略。PostgreSQL 的标准发布中包含了用于二维几何数据类型的 Gi
PostgreSQL:表空间
PostgreSQL 中的表空间允许在文件系统中定义用来存放表示数据库对象的文件的位置。在 PostgreSQL 中表空间实际上就是给表指定一个存储目录。作用通过使用表空间,管理员可以控制一个 PostgreSQL 安装的磁盘布局。这么做至少有两个用处。如果初始化集簇所在的分区或者卷用光了空间,而又不能在逻辑上扩展或者做别的什么操作,那么表空间可以被创建在一个不同的分区上,直到系统可以被重新配置。
PostgreSQL:内置分区表
语法-- 主表 CREATE TABLE table_name (...) [ PARTITION BY { RANGE | LIST } ( {column_name | (expression)
PostgreSQL:传统分区表
创建分区表创建父表,如果父表上定义了约束,子表会继承,因此除非是全局约束,否则不应该在表上定义约束,另外,父表不应该写入数据CREATE TABLE log_ins(id serial, user_id int4, create_time times
PostgreSQL:表继承
使用 INHERITS 创建的新表会继承一个或多个父表,子表只会继承父表的表结构和 NOT NULL,DEFAULT,CHECK 三种约束,主键,外键和唯一键以及索引不会被继承,所以修改父表的结构(增删字段),NOT NULL,DEFAULT 和 CHECK 约束会自动同步子表修改。示例创建父表,用于测试create table tbl_inherits_parent( &n
PostgreSQL:临时表
语法CREATE [ [ GLOBAL | LOCAL ] { TEMPORARY | TEMP } | UNLOGGED ] TABLE [ IF NOT EXISTS ] table_n
PostgreSQL:表
CREATE TABLEPostgreSQL 使用 CREATE TABLE 语句来创建数据库表格。普通建表CREATE TABLE table_name( column1 datatype, column2 datatype, column3&
PostgreSQL:表的存储属性
TOASTTOAST 是“The Oversized-Attribute Storage Technique”的缩写,主要用于存储一个大字段的值。特点PostgreSQL采用固定页面大小(通常是8Kb,不象oracle在运行期间有多种选择),元组不能跨越多个页面,无法实现“大字段值“的直接存储。TOAST 提供了解决方法,允许大的字段值被压缩或分裂为多个物理行。postgresql 只为部分数据类