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

南阳网站推广排名我想做个网站找谁做

南阳网站推广排名,我想做个网站找谁做,做网站赚不到钱了,区块链开发前景前言#xff1a; postgresql数据库是比较复杂的一个关系型数据库#xff0c;而有些时候#xff0c;即使是简单的插入更新操作也是有很多复杂的机制。 那么#xff0c;什么是冲突#xff1f;什么时候会遇到冲突#xff08;也就是冲突的常见场景#xff09;#xff1f;…前言 postgresql数据库是比较复杂的一个关系型数据库而有些时候即使是简单的插入更新操作也是有很多复杂的机制。 那么什么是冲突什么时候会遇到冲突也就是冲突的常见场景如果有冲突我们应该怎么去解决这些问题我想应该是在此文章中详细说明的。 一 什么是冲突 复杂点的说法数据库的冲突主要是指并发事务对同一数据的读写操作和写写操作。例如当多个用户同时尝试修改同一行数据时可能会发生冲突。这种冲突可能会导致数据不一致或数据损坏。 解决这种并发冲突的方法有多种。其中一种是通过锁定整个行数据或整个表数据来防止并发错误这分别被称为行锁和表锁。行锁的开销小加锁快但出现死锁的概率较高表锁的锁定力度大发生锁冲突的概率较低但会导致并发度最低。 另外乐观并发控制是另一种解决冲突的方法它假设并发冲突相对较少。与悲观方法预先锁定数据然后再进行修改相反乐观并发不会进行锁定但如果数据自查询后发生更改则会安排数据修改在保存时失败。此并发失败会报告给应用程序应用程序会进行相应处理例如可能会对新数据重试整个操作。这些也就是面试DBA的时候常说的悲观锁乐观锁这些 简单来说就 假设有一个名为employees的表其中包含以下列id、name、age和salary。现在有两个并发事务它们都试图更新同一个员工的薪水。 事务1 BEGIN; UPDATE employees SET salary 5000 WHERE id 1; COMMIT; 事务2 BEGIN; UPDATE employees SET salary 6000 WHERE id 1; COMMIT; 在这个例子中事务1将员工的薪水从4000更新为5000而事务2也将员工的薪水从4000更新为6000。由于这两个操作是并发执行的因此最终的结果将是员工的薪水被更新为6000而不是预期的5000。这就是一个典型的PostgreSQL冲突示例。 我们在使用SQLinsert语句进行插入 操作 而目标表中存在这些数据将会导致这些insert 的SQL语句失败 这个时候我们就可以说有冲突现象发生了。 例如 二 冲突在什么时候出现 很简单多用户同一时间执行同一个插入的SQL语句的时候还一种情形是增量迁移增量同步数据的时候第二种情形应该是比较常见的。 三 冲突的解决 悲观锁Pessimistic Locking悲观锁是一种并发控制策略它假设多个事务在没有冲突的情况下同时执行的可能性很小因此在每个事务开始时就会锁定数据行或表直到事务完成并释放锁。这种机制可以有效地避免冲突但会导致并发性能下降。 乐观锁Optimistic Locking乐观锁是一种并发控制策略它假设多个事务在没有冲突的情况下同时执行的可能性很大只有在提交时才会检查是否存在冲突。如果存在冲突则事务会被回滚并重新尝试。这种机制可以提高并发性能但需要额外的逻辑来处理冲突。 时间戳Timestamping时间戳是一种简单的并发控制策略它在每个记录中添加一个时间戳字段用于记录该记录的最后修改时间。当更新记录时比较当前时间戳和记录中的时间戳是否一致如果不一致则说明有其他事务已经修改了该记录需要重新执行更新操作。 分布式锁Distributed Locking分布式锁是一种在分布式系统中解决并发冲突的机制它可以确保只有一个节点能够访问共享资源。常见的实现方式包括基于Redis、Zookeeper等中间件实现的分布式锁。 重试机制Retry Mechanism重试机制是一种常见的解决冲突的方法当某个操作失败时会进行多次重试直到成功为止。这种方法适用于一些非关键性操作但对于关键性操作可能会导致数据不一致等问题。 忽视冲突  适用于上面第二节说的增量更新同步迁移数据库的操作 示例1 忽视冲突 例如两张表之间的同步虽然形式上是全表同步但希望实现的效果是增量同步此时我们需要在INSERT语句后面添加冲突指示on conflict DO NOTHING; 这样有相同的数据时检查到了冲突忽略掉此条数据插入保持原有数据不变。 INSERT INTO 表1名 SELECT * FROM 表2名 on conflict DO NOTHING; 示例2 冲突后update更新部分冲突更新 ---表示在向名为table_name的表中插入一条数据 ---其中包含两个字段column1和column2。 ---如果表中已经存在具有相同column1值的记录 ---则将该记录的column2字段更新为新插入记录的column2值。INSERT INTO table_name (column1, column2) VALUES (value1, value2) ON CONFLICT (column1) DO UPDATE SET column2 EXCLUDED.column2;示例3 冲突后根据条件更新字段 INSERT INTO table_name (column1, column2) VALUES (value1, value2) ON CONFLICT (column1) DO UPDATE SET column2 EXCLUDED.column2 WHERE column2 EXCLUDED.column2;示例4 DO NOTHING RETURNING在发生冲突时不执行任何操作若不冲突返回插入的行。 INSERT INTO table_name (column1, column2) VALUES (value1, value2) ON CONFLICT (column1) DO NOTHING RETURNING *;示例5 DO UPDATE SET ... WHERE ... RETURNING在发生冲突时执行更新操作并根据条件进行更新并返回更新的行  INSERT INTO table_name (column1, column2) VALUES (value1, value2) ON CONFLICT (column1) DO UPDATE SET column2 EXCLUDED.column2 WHERE column2 EXCLUDED.column2 RETURNING *;未完待续
http://www.dnsts.com.cn/news/98833.html

相关文章:

  • 黑龙江建设网站招聘python 做网站速度
  • 成品影视app开发月光宝盒怎么样漳州seo网站快速排名
  • 广州市网站设计公司常用网站字体
  • 兰州网站建设营销q479185700刷屏上海做宴会的网站
  • 官方制作网站拼多多开网店怎么开 新手
  • 网页建立网站平台手机 网站 源码
  • 英文杭州网站建设软件技术专业可以从事什么工作
  • 网站 制作软件太原住房与城乡建设厅网站
  • 海口cms模板建站没有做网站能备案吗
  • 很多搜索词网站怎样做虚拟机做局域网网站服务器配置
  • 网站游戏入口论坛平台主要产品
  • 上海嘉定建设局官方网站陕西省建设工程施工许可证查询网站
  • 做网站效果图昆明体育城微网站建设
  • 营销型网站制作流程wordpress多个主题
  • 众鱼深圳网站建设有关建设旅游网站的公司
  • 海南手机网站建设公司哪家好wordpress 锚点插件
  • 最牛网站建设wordpress做网站教程
  • wordpress类似网站装修流程先后顺序
  • 特色网站模板微信小程序二维码生成器
  • 图书网站策划书深圳公司注册资金最低多少
  • 中国电子系统建设三公司网站上海手机网站建设报价
  • 网站建设投标文档江西省做网站
  • 中国建设银行青浦支行网站网页翻译失败
  • 免备案的网站空间程序员培训机构哪家好
  • wordpress导航站的源码dz做的网站容易收录吗
  • 网站模板抄袭新站整站快速排名
  • 湖南平台网站建设设计摄影工作室建设
  • 网站建设网站及上传网站做好怎么推广
  • 四川省建设工程网站中国建设银行汕头支行网站
  • 许昌正规网站优化公司wordpress ishome