update

MySQL innodb下的记录锁,间隙锁,next-key锁

╄→尐↘猪︶ㄣ 提交于 2019-12-12 13:50:21
你需要知道的 之前我们介绍了排他锁,其实innodb下的记录锁(也叫行锁),间隙锁,next-key锁统统属于排他锁。 行锁 记录锁其实很好理解,对表中的记录加锁,叫做记录锁,简称行锁。 生活中的间隙锁 编程的思想源于生活,生活中的例子能帮助我们更好的理解一些编程中的思想。 生活中排队的场景,小明,小红,小花三个人依次站成一排,此时,如何让新来的小刚不能站在小红旁边,这时候只要将小红和她前面的小明之间的空隙封锁,将小红和她后面的小花之间的空隙封锁,那么小刚就不能站到小红的旁边。 这里的小红,小明,小花,小刚就是数据库的一条条记录。 他们之间的空隙也就是间隙,而封锁他们之间距离的锁,叫做间隙锁。 Mysql中的间隙锁 下表中(见图一),id为主键,number字段上有非唯一索引的二级索引,有什么方式可以让该表不能再插入number=5的记录? 图一 根据上面生活中的例子,我们自然而然可以想到,只要控制几个点,number=5 之前 不能插入记录,number=5现有的记录 之间 不能再插入新的记录,number=5 之后 不能插入新的记录,那么新的number=5的记录将不能被插入进来。 那么,mysql是如何控制number=5之前,之中,之后不能有新的记录插入呢(防止幻读)? 答案是用间隙锁,在RR级别下,mysql通过间隙锁可以实现锁定number=5之前的间隙,number

Docker Stack 部署yunbay后台项目

橙三吉。 提交于 2019-12-11 19:54:47
一、项目用到nsqd分布式消息服务 nsqd nsqlookupd nsqadmin docker nsq-compose.yml文件如下: version: "3.2" services: # 唯一性,在集群中的节点只能指向唯一的nsqlookupd服务 # 去中心化,即使nsqlookupd崩溃,也会不影响正在运行的nsqd服务 # 充当nsqd和naqadmin信息交互的中间件 # 提供一个http查询服务,给客户端定时更新nsqd的地址目录 nsqlookup: # 拓扑结点 image: nsqio/nsq:latest ports: - 4160:4160 - 4161:4161 command: /nsqlookupd networks: - yunbay_backend nsqd: # nsqd节点 image: nsqio/nsq:latest ports: - 4150:4150 - 4151:4151 volumes: - /data/nsqd/:/data depends_on: - nsqlookup command: /nsqd --lookupd-tcp-address=nsqlookup:4160 --data-path=/data # nsqd数据持久目录 networks: - yunbay_backend nsqadmin: # nsq后台管理

Ubuntu设置开机时启动的系统内核版本

爷,独闯天下 提交于 2019-12-11 13:32:15
1、查看系统当前安装的所有内核版本 dpkg --get-selections | grep linux 如下图: 其中框中的三个modules就是我的系统当前安装的内核,如果我想指定一个固定的版本,继续下一步。 2、修改配置文件 sudo vim /etc/default/grub 修改如下: GRUB_DEFAULT="Advanced options for Ubuntu>Ubuntu, with Linux 4.15.0-46-generic" 这样即可。 3、更新系统设置 sudo update-grub 4、重启 搞定~ 来源: https://www.cnblogs.com/daner1257/p/12021945.html

【VOLTE案例分析】Server Internal Error 500导致的未接通

╄→尐↘猪︶ㄣ 提交于 2019-12-11 12:16:19
【问题描述】 在集团测试LOG中,存在Server Internal Error 导致的失败事件,表现为呼叫过程中,终端主动收到网络侧下发的Server Internal Error 500消息,随后呼叫中止,出现未接通事件。 【问题分析】 1. 主叫发出UPDATE后,被叫收到UPDATE并回复UPDATE 200,随后被叫发送Ringing 180,主叫同时收到UPDATE 200和Ringing 180。按照正常的信令流程应该是先收到UPDATE 200,再收到Ringing 180。 2. 然后主叫收到网络侧下发的 INVITE Server Internal Error 500.主叫专载被释放,去激活,导致会话未接通。 【问题定位】 主叫收到网络侧下发的INVITE 500,然后网络侧又下发RRC重配,释放掉QCI 1,然后去激活,会话流程终止,导致未接通。 【解决措施】 需要核心网确认,为什么会下发INVITE 500,什么情况下会导致网络侧下发INVITE 500,随后的专载释放是否由INVITE 500导致的。 来源: CSDN 作者: ZhongGuoRenMei 链接: https://blog.csdn.net/ZhongGuoRenMei/article/details/103488700

vue实现分页组件

倖福魔咒の 提交于 2019-12-11 08:43:46
介绍 组件输出 组件参数 (两个模板都是这些参数) curPage : { //当前页码 type : Number , default : 1 } , totalNews : { //总新闻条数 type : Number , required : true , } , baseUrl : { //根路径 type : String , default : '/' } , newsPerPage : { //每页展示的新闻数量 type : Number , required : true } , MaxButtonNumberPerPage : { //每页最大渲染pageButton数量 type : Number , default : 5 } 调用方法 模板一 <Pagenation :curPage="xx" :totalNews="xxx" :baseUrl="/xinwen/" :newsPerPage="xxx"/> 模板二 <Pagenation :curPage="xx" :totalNews="xxx" @update:curPage="methodFromFather" :newsPerPage="xxx"/> 当然,你得去你的父组件中定义好你自己的业务逻辑方法 methodFromFather 如: //Father.vue methods : {

MySQL 触发器

限于喜欢 提交于 2019-12-11 07:56:10
一、触发器概念 触发器(trigger):监视某种情况,并触发某种操作,它是提供给程序员和数据分析员来保证数据完整性的一种方法,它是与表事件相关的特殊的存储过程,它的执行不是由程序调用,也不是手工启动,而是由事件来触发,例如当对一个表进行操作( insert,delete, update)时就会激活它执行。 触发器经常用于加强数据的完整性约束和业务规则等。 触发器创建语法四要素: 1.监视地点(table) 2.监视事件(insert/update/delete) 3.触发时间(after/before) 4.触发事件(insert/update/delete) 触发器基本语法如下所示: 其中:trigger_time是触发器的触发事件,可以为before(在检查约束前触发)或after(在检查约束后触发);trigger_event是触发器的触发事件,包括insert、update和delete,需注意对同一个表相同触发时间的相同触发事件,只能定义一个触发器;可以使用old和new来引用触发器中发生变化的记录内容。 触发器SQL语法: [sql] view plain copy create trigger triggerName after/before insert/update/delete on 表名 for each row #这句话在mysql是固定的 begin

Qt 之QStandItemModel解决插入耗时问题

耗尽温柔 提交于 2019-12-11 05:08:48
#include <QThread> class TableModel : public QStandardItemModel, public QThread { public: TableModel(QObject* parent) : QStandardItemModel(parent){} virtual ~TableModel() {} public: virtual void Update() { this->start(); } private: void SetTableModelData() { //操作数据 QAbstractItemModel::layoutChanged(); } protected: virtual void run() { m_TableModelLock.Lock(); SetTableModelData(); m_TableModelLock.Unlock(); } private: CLock m_TableModelLock; }; QStandardItemModel继承了线程,所有的更新,删除,添加都通过Update来操作,测试暂时未发现崩溃 来源: CSDN 作者: qq76211822 链接: https://blog.csdn.net/sz76211822/article/details/103455619

在论坛中出现的比较难的sql问题:22(触发器专题3)

时间秒杀一切 提交于 2019-12-11 02:54:29
原文: 在论坛中出现的比较难的sql问题:22(触发器专题3) 最近,在论坛中,遇到了不少比较难的sql问题,虽然自己都能解决,但发现过几天后,就记不起来了,也忘记解决的方法了。 所以,觉得有必要记录下来,这样以后再次碰到这类问题,也能从中获取解答的思路。 本篇 是触发器专题,有很多触发器的问题。 1、sql唯一性约束如何建立? http://bbs.csdn.net/topics/390697861 比如一张表Table1, 三个字段 ID A B ID为主键, 当B字段为某一特定值value时,A字段值是要唯一约束的, 若B字段为其他值,A不加唯一约束的。。 那达不到我要的约束条件了, 我想要的字段是是这样的(k是B的特定值) ID A B 1 a b 2 a b 3 b k 4 c k 如果在此基础上再加 A B b k 或者c k 则不能被允许。 我想在数据库中直接约束,看有没有办法,如果没有,则就要代码约束判断了。 我的方法: --drop table tb--go create table tb(ID int, A varchar(10), B varchar(10)) insert into tbselect 1 ,'a', 'b' union allselect 2 ,'a', 'b' union allselect 3 ,'b', 'k' union

数据库

天大地大妈咪最大 提交于 2019-12-10 20:06:50
update 表名 set 值=新值 where 列名 in (select 列名 from 表名 where 筛选条件) 删除 delete from 表名 where 筛选条件 插入指定列名 insert [into] 表名(列名1,列名2.。。)values(列值1,列值2.。。); 不指定字段 insert 表名 values (‘1002’,‘李璐0’,null) 插入多行 insert 表名 (列名1,列名2)values (列值1,列值2),(列值1,列值2); INSERT student (id,name,zz) SELECT id,name,zz from student; sql语句基本格式: select<输出字段>from 表1,表2{。。。} where <表1,字段名1><链接谓词><表2.字段2> group by 字·段名 having 条件 order by 字段名 sac/desc limit n,m select distinct 字段列表 或 函数 或 表达式 as 别名 from 表名 as 别名 where 条件 group by 字段名 Having 条件表达式 order by 字段名 asc,desc limit n,m; E-R图:1:1 1:多 多:多 数据库设计模型 概念模型:对客观事物的描述 逻辑模型:(层次模型、网状模型

史上最实用mysql参数之一-----sql_safe_updates

落花浮王杯 提交于 2019-12-10 20:06:28
mysql数据库是可以开启安全模式,不过默认情况下,安全模式不开启的,下面就来说说什么是mysql的安全模式 不知道小伙伴们是否有过维护的数据库表业务数据被人或者因为程序bug导致全表更新,全表删除的痛苦经历,恢复业务数据真的是一个精细活,尤其与交易和钱相关的数据,必须恢复成和原来一模一样,那能不能在数据库层面架起最后一道安全堡垒,拒绝全表更新,全表删除的非法操作呢,答案是有的,在mysql中sql_safe_updates可以完美解决这个问题,下面就来给大家演示一下实际效果 sql_safe_updates默认是不开启的 mysql > show variables like 'sql_safe_updates' ; +------------------+-------+ | Variable_name | Value | +------------------+-------+ | sql_safe_updates | OFF | +------------------+-------+ 1 row in set ( 0.01 sec ) 现在就开启这个参数,如果要永久生效,需要将参数添加到数据库配置文件(my.cnf)中 mysql > set global sql_safe_updates = 1 ; Query OK, 0 rows affected ( 0.00