当前位置: 首页 > news >正文

网站伪静态是什么意思设计网站要多久

网站伪静态是什么意思,设计网站要多久,肇东网站建设,跨境电商公司招聘岗位及要求文章目录 PostgreSQL 事务大家都知道的 ACID事务的基本使用保存点 PostgreSQL 并发并发问题MVCC PostgreSQL 锁机制表锁行锁 总结 PostgreSQL 事务 大家都知道的 ACID 在日常操作中#xff0c;对于一组相关操作#xff0c;通常要求要么都成功#xff0c;要么都失败。在关系… 文章目录 PostgreSQL 事务大家都知道的 ACID事务的基本使用保存点 PostgreSQL 并发并发问题MVCC PostgreSQL 锁机制表锁行锁 总结 PostgreSQL 事务 大家都知道的 ACID 在日常操作中对于一组相关操作通常要求要么都成功要么都失败。在关系型数据库中称这一组操作为事务。为了保证整体事务的安全性有ACID这一说 原子性A事务是一个最小的执行单位一次事务中的操作要么都成功要么都失败。一致性C在事务完成时所有数据必须保持在一致的状态。事务完成后吗最终结果和预期结果是一致的隔离性I一次事务操作要么是其他事务操作前的状态要么是其他事务操作后的状态不存在中间状态。持久性D事务提交后数据会落到本地磁盘修改是永久性的。 PostgreSQL相比于其他数据库有一个比较大的优化DDL也可以包含在一个事务中。比如集群中的操作一个事务可以保证多个节点都构建出一个表才算成功。 事务的基本使用 PostgreSQL跟MySQL一样是自动提交事务的。 可以基于关闭PostgreSQL的自动提交事务来进行操作。 但是上述方式比较麻烦传统的方式。 也可以根据命令处理一个事务 begin开始事务commit提交事务rollback回滚事务 -- 开启事务 begin; -- 操作 insert into test values (7,bbb,12,5); -- 提交事务 commit;保存点 在PostgreSQL中保存点savepoint用于在事务中创建中间状态点允许在事务过程中设置临时的“检查点”以便在必要时回滚事务的一部分。 比如项目中有一个大事务操作超时回滚成本太高。针对大事务可以拆分成几个部分每个部分完成后构建一个保存点如果后面操作超时了回滚到保存点继续重试。 -- savepoint操作 -- 开启事务 begin; -- 插入一条数据 insert into test values (8,铃铛,55,11); -- 添加一个保存点 savepoint ok1; -- 再插入数据,比如出了一场 insert into test values (9,大唐官府,66,22); -- 回滚到之前的提交点 rollback to savepoint ok1; -- 就可以开始重试操作重试成功commit失败可以rollback; commit;PostgreSQL 并发 并发问题 在不考虑隔离性的前提下事务的并发可能会出现的问题 脏读读到了其他事务未提交的数据。必须避免这种情况不可重复读同一事务中多次查询同一数据结果不一致因为其他事务修改造成的。一些业务中这种不可重复读不是问题幻读同一事务中在修改某个数据后再次查询还是之前的数据因为其他事务对数据进行了更新这种现象为幻读。 针对这些并发问题关系型数据库有一些事务的隔离级别一般用4种。 READ UNCOMMITTED读未提交READ COMMITTED读已提交可以解决脏读PGSQL默认隔离级别REPEATABLE READ可重复读可以解决脏读和不可重复读MySQL默认是这个隔离级别PGSQL也提供了但是设置为可重复读效果还是串行化SERIALIZABLE串行化 PGSQL在老版本中只有两个隔离级别读已提交和串行化在PGSQL中不存在脏读问题。 MVCC PostgreSQL中在事务的并发问题里也是基于MVCC多版本并发控制去维护数据的一致性。详细内容见多版本并发控制MVCC 首先要清楚为啥要有MVCC 如果一个数据库频繁的进行读写操作为了保证安全采用锁的机制。但是如果采用锁机制如果一些事务在写数据另外一个事务就无法读数据会造成读写之间相互阻塞。 所以大多数的数据库都会采用一个机制 多版本并发控制 MVCC 来解决这个问题。 MVCC是一种并发控制的方法它通过保存数据的多个版本来实现并发访问。在MVCC中每个事务在开始时获取一个唯一的版本号然后读取和修改数据时都会带上这个版本号。这样每个事务只能看到自己的版本号小于或等于自己的数据版本从而实现了并发访问。 PGSQL中每张表都会自带两个字段 xmin给当前事务分配的数据版本。如果有其他事务做了写操作并且提交事务了就给xmin分配新的版本。xmax当前事务没有存在新版本xmax就是0。如果有其他事务做了写操作未提交事务将写操作的版本放到xmax中。提交事务后xmax会分配到xmin中然后xmax归0。 基于上图的操作查看效果 事务A -- 左事务A --1、开启事务 begin; --2、查询某一行数据, xmin 630,xmax 0 select xmin,xmax,* from test where id 8; --3、每次开启事务后会分配一个事务ID 事务id631 select txid_current(); --7、修改id为8的数据然后在本事务中查询 xmin 631, xmax 0 update test set name 铃铛 where id 8; select xmin,xmax,* from test where id 8; --9、提交事务 commit;事务B -- 右事务B --4、开启事务 begin; --5、查询某一行数据, xmin 630,xmax 0 select xmin,xmax,* from test where id 8; --6、每次开启事务后会分配一个事务ID 事务id632 select txid_current(); --8、事务A修改完事务B再查询 xmin 630 xmax 631 select xmin,xmax,* from test where id 8; --10、事务A提交后事务B再查询 xmin 631 xmax 0 select xmin,xmax,* from test where id 8;PostgreSQL 锁机制 当然PostgreSQL也支持表锁和行锁来控制并发访问。PostgreSQL中主要有两种锁一个表锁一个行锁。 表锁 表锁就是锁住整张表也分为很多中模式其中最核心的两个 ACCESS SHARE共享锁读锁读读操作不阻塞但是不允许出现写操作并行ACCESS EXCLUSIVE互斥锁写锁无论什么操作进来都阻塞。 具体的可以查看官网文档。 PostgreSQL中表锁的实现 基于LOCK开启表锁指定表的名字name其次在MODE中指定锁的模式NOWAIT可以指定是否在没有拿到锁时一致等待。 -- 事务1 -- 基于互斥锁锁住test表 -- 先开启事务 begin; -- 基于默认的ACCESS EXCLUSIVE锁住test表 lock test in ACCESS SHARE mode; -- 操作 select * from test; -- 提交事务锁释放 commit;当事务1开启锁住当前表之后如果使用默认的ACCESS EXCLUSIVE其他连接操作表时会直接阻塞住。 如果事务1是基于ACCESS SHARE共享锁时其他事务是可以查询当前表的。 行锁 PostgreSQL的行锁和MySQL的基本是一模一样的基于select for update就可以指定行锁。 MySQL中有一个概念for update时如果select的查询没有命中索引可能会锁表。 PostgerSQL有个特点for update时如果select的查询没有命中索引不一定会锁表依然会实现行锁。 -- 先开启事务 begin; -- 基于for update 锁住id为3的数据 select * from test where id 3 for update; update test set name v1 where id 3; -- 提交事务锁释放 commit;其他的事务要锁住当前行会阻塞住。 总结 事务、MVCC和锁是三个相互关联的概念它们共同保证了数据库的一致性和并发性。 事务和MVCC是互相配合的事务通过MVCC来实现并发控制保证数据的一致性。锁是事务实现并发控制的一种手段通过加锁来保证数据的一致性。
http://www.zqtcl.cn/news/852635/

相关文章:

  • 什么网站做外贸最好坪地网站建设公司
  • 做网站费用怎么核算没有公司 接单做网站
  • 如何建设一个优秀的电商网站wordpress注册去掉电子邮件
  • 站长工具 seo综合查询长沙高校网站制作公司
  • 杭州网站定制开发哪家好wordpress重置
  • 哈尔滨市建设安全网站火车头更新wordpress
  • 做亚马逊外国网站需要语言好吗邢台seo
  • jsp在网站开发中的优势国内哪个推广网站做的好
  • 做网站工资高吗精品资料
  • 做农业需关注什么网站热门代理项目
  • 网站开发公司营业范围照片制作视频软件app
  • 做网站怎么qq邮箱验证免费拥有wordpress
  • 校园网站建设资金来源有wordpress权重
  • 魔站网站开发wordpress 3.3.1
  • 东莞个人免费建网站网站后台管理系统 asp
  • 呼和浩特网站制作 建设wordpress怎么改中文
  • 银医网站建设方案公司网站模板免费下载
  • 优秀网站设计案例中国网站建设东莞公司
  • 自己的公网ip可以做网站网页设计与制作课程思政建设内容
  • 静态网站 搜索搭建织梦网站教程
  • idc 网站备案手机电脑网站建设短视频
  • 做搜狗pc网站优化快速亚马逊云搭建WordPress
  • 免费的建网站软件2020做seo还有出路吗
  • 宁波三优互动网站建设公司怎么样网站建设公司管理流程图
  • 网站内文章外链如何做创新设计
  • 西安做网站公网站做友链有行业要求吗
  • 做现金贷网站的公司软件开发设计文档
  • 数据做图网站表示商业网站的域名
  • 网站备案单位备案老域名
  • 黔西南州建设局网站网站建设流程的过程