update

MySQL binlog 格式(Mixed,Statement,Row Level)

我的未来我决定 提交于 2020-02-29 02:42:46
推荐用mixed,默认使用statement,基于上下文。 MySQL Replication复制可以是基于一条语句(Statement level),也可以是基于一条记录(Row level),可以在MySQL的配置参数中设定这个复制级别,不同复制级别的设置会影响到Master端的bin-log记录成不同的形式。 Row Level:日志中会记录成每一行数据被修改的形式,然后在slave端再对相同的数据进行修改。 优点:在row level模式下,bin-log中可以不记录执行的sql语句的上下文相关的信息,仅仅只需要记录那一条记录被修改了,修改成什么样了。所以row level的日志内容会非常清楚的记录下每一行数据修改的细节,非常容易理解。而且不会出现某些特定情况下的存储过程,或function,以及trigger的调用和触发无法被正确复制的问题。 缺点:row level下,所有的执行的语句当记录到日志中的时候,都将以每行记录的修改来记录,这样可能会产生大量的日志内容,比如有这样一条update语句:update product set owner_member_id = ‘b’ where owner_member_id = ‘a’,执行之后,日志中记录的不是这条update语句所对应额事件(MySQL以事件的形式来记录bin-log日志)

TCL-事物隔离级别

爷,独闯天下 提交于 2020-02-29 00:43:48
事物控制语言:用于处理意外中断 事物 一个或一组SQL语句组成一个执行单元,要么全部执行,要么全不执行 执行失败、产生错误,整个单元将会回滚。(撤销所有操作) 所有影响的数据返回到事物开始前的状态。 如果单元中所有SQL语句执行成功,则事物被顺利执行 事物具备的属性:ACID(acid)属性 1.A原子性:代表事物是一个不可分割的工作单位(最小单位),要么全部执行,要么全不执行 2.C一致性:执行一个事物会使数据,从一个一致的状态,切换到,另一个一致的状态。(准确、完整、可靠) 3.I隔离型:一个事物的执行,不受其他事物的干扰(隔离级别控制) 4.D持久性:一个事物一旦提交数据就是永久性的改变,接下来操作和故障不会对其产生影响 删除就是删了,没办法撤销,只能重新插入 查看MySQL支持的存储引擎 SHOW ENGINES; InnoDB 当前服务器默认的存储引擎 支持事物 MEMORY 使用的也很多 不支持事物 MyISAM 5.5版本之前使用的 不支持事物 事物的创建 隐式事物(自动事物) 事物没有明显的开启和结束的标记(自动的开启自动的结束) 比如insert、update、delete语句 显示事物 事物具有明显的开启和结束的标记 将两个隐式语句和为一个事物 前提:必须禁用自动提交 禁用自动提交:set autocommit=0; 只正对当前事物有效,不是永久关闭 案例:转账

satis搭建composer私库成功update/install笔记

泄露秘密 提交于 2020-02-28 15:26:08
小编上周五没搞定,遂存档问题期待专业人士指点。 satis搭建composer私库,折腾近两天没搞定。问题在哪里? 一周后,果有懂行玩家秉承互联网分享精神,于评论区、私信指导,小编静下心耐心折腾俩小时,终于解决问题。 成功执行 composer update,信息如下: PS E:\code\v4> composer update Loading composer repositories with package information Updating dependencies (including require-dev) Package operations: 1 install, 0 updates, 0 removals - Installing yixzm/yix_composer (dev-master 25899c3): Cloning 25899c3b64 from cache Writing lock file Generating autoload files 回顾失败教训,做一整理。 1. git仓库准备 composer代码库,能正常clone。示例如: git clone git@www.domain.com:/repo/yix_composer.git Cloning into 'yix_composer'... remote: Counting

Springboot mongodb 操作指南

时光怂恿深爱的人放手 提交于 2020-02-28 12:22:38
一、新建实体类 @Data @Builder @NoArgsConstructor @AllArgsConstructor @Document(collection = "user_info") public class UserInfo { @Id private String id; private String name; private List<Like> likes; @Data @Builder @NoArgsConstructor @AllArgsConstructor public static class Like{ private String code; private String name; } } 二、基本使用方法 1:普通新增修改 @RequestMapping(value = "add") public ResponseMessage add(){ List<UserInfo.Like> likes_1 = new ArrayList<>(); UserInfo.Like like_1 = new UserInfo.Like(); like_1.setCode("PLAY"); like_1.setName("玩耍"); likes_1.add(like_1); UserInfo.Like like_2 = new UserInfo.Like();

MySQL修改密码注意事项

独自空忆成欢 提交于 2020-02-28 07:36:02
5.7版本前的mysql运行: update user set password=password(“你的密码”) where user=“用户”; .5.7版本后的mysql运行:update mysql.user set authentication_string=password(‘你的密码’) where user=‘用户’; 来源: CSDN 作者: 江南一舟110 链接: https://blog.csdn.net/qq_30519365/article/details/104533998

Mybatis中的update动态SQL语句

柔情痞子 提交于 2020-02-28 01:25:50
Mybatis中的CRUD操作(增删改查)中,简单的SQL操作比较直观,如查找操作: <select id="findBySrcId" resultMap="entityRelationResultMap"> SELECT * FROM ENTITY_RELATION WHERE SRC_ID=#{srcId} </select> 其中id对应同名java文件中的方法,resultMap对应的自定义的数据类型(当使用java自带类型就更容易了,比如java.lang.String之类的)。 但是涉及到更新操作时,可能不需要对所有字段更新,这时不需要更新的字段需要保持原字段信息,当使用以下信息就会报错: <update id="updateOne" parameterType="com.inspur.search.data.EntityRelation"> update ENTITY_RELATION SET SRC_ID=#{srcId},SRC_TYPE=#{srcType},DEST_ID=#{destId}, DEST_TYPE=#{destType},REL_TYPE=#{relType},STATUS=#{status},SN_ID=#{snId} where id=#{id} </update> 因为不更新的字段,会被传递null到SQL中,引起异常。

303-区域和检索 - 数组可修改

天大地大妈咪最大 提交于 2020-02-27 18:40:27
303-区域和检索 - 数组可修改 给定一个整数数组 nums,求出数组从索引 i 到 j (i ≤ j) 范围内元素的总和,包含 i, j 两点。 update(i, val) 函数可以通过将下标为 i 的数值更新为 val,从而对数列进行修改。 示例: Given nums = [1, 3, 5] sumRange(0, 2) -> 9 update(1, 2) sumRange(0, 2) -> 8 说明: 数组仅可以在 update 函数下进行修改。 你可以假设 update 函数与 sumRange 函数的调用次数是均匀分布的。 来源:力扣(LeetCode) 链接: https://leetcode-cn.com/problems/range-sum-query-mutable 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 class NumArray { private int[] nums; public int sumRange(int i, int j) { int sum = 0; for (int l = i; l <= j; l++) { sum += nums[l]; } return sum; } public void update(int i, int val) { nums[i] = val; } public

理解共享锁和排它锁

一曲冷凌霜 提交于 2020-02-27 14:23:31
1.共享锁 (lock in share mode) 1.1 概念 允许不同事务之前共享加锁读取,但不允许其它事务修改或者加入排他锁 如果有修改必须等待一个事务提交完成,才可以执行,容易出现死锁 1.2 例子: 共享锁事务读取 以不同的 session 来举例: a: start transaction; select * from demo where id = 1 lock in share mode; b: start transaction; select * from demo where id = 1 lock in share mode; 此时 a 和 b 都可以正常获取结果,那么再加入 c 排他锁读取尝试 c: start transaction; select * from demo where id = 1 for update; 在 c 中则无法获取数据,直到超时或其它事物 commit 共享锁事务更新 a: update demo set name = 'xxx' where id = 1; 可以很快获取执行结果。当 b 再次执行修改 id=1 的语句时: b: update demo set name = 'yyy' where id = 1; 就会出现死锁或者锁超时,错误如下: Deadlock found when trying to get lock

Spring事务失效的原因总结

纵饮孤独 提交于 2020-02-27 13:23:29
用 Spring 的 @Transactional 注解控制事务有哪些不生效的场景? 不见得总结全,但希望可以帮忙有需要的人。 1、数据库引擎不支持事务 这里以 MySQL 为例,其 MyISAM 引擎是不支持事务操作的,InnoDB 才是支持事务的引擎,一般要支持事务都会使用 InnoDB。 根据 MySQL 的官方文档: https://dev.mysql.com/doc/refman/5.5/en/storage-engine-setting.html 从 MySQL 5.5.5 开始的默认存储引擎是:InnoDB,之前默认的都是:MyISAM,所以这点要值得注意,底层引擎不支持事务再怎么搞都是白搭。 2、没有被 Spring 管理 如下面例子所示: // @Service public class OrderServiceImpl implements OrderService { @Transactional public void updateOrder ( Order order ) { // update order } } 如果此时把 @Service 注解注释掉,这个类就不会被加载成一个 Bean,那这个类就不会被 Spring 管理了,事务自然就失效了。 3、方法不是 public 的 以下来自 Spring 官方文档: When using proxies,