如果熟悉MySQL你肯定知道MySQL能过对数据进行恢复(前提是开启bin log日志),当然这要归功于bin log日志。但是你可曾听过redo log呢?
表person的create_time字段是datetime类型,modify_time是timestamp类型
问题描述 mysql数据库有auto_increment这样一个特性,一般是用来设置Integer类型主键自增长。比如下面的代码: -- 刚创建表,该表没有AUTO_INCREMENT值 create table test( id int(11) primary key not null auto_increment, field1 varchar(40) not null default '' ) engine=InnoDB; show create table test\G; ... Creat
之前的文章中写了一个小问题,当我们使用自增长的方式限定了一个自增长字段id以后,如果删除id=7的一条记录,再重新插入新纪录的时候,这个新纪录的id值会是多少?
不知道是不是因为mysql(6.0)的版本问题,还是各版本都是这种情况,mysql中创建联合主键,联合主键列名之外不可以用单引号括上,否则出现错误,无法创建,报错是该列在表中不存在。例子代码如下:
上一篇介绍的是比较简单的视图,其实用起来是相对比较简单的,以后有什么更多的关于视图的用法,到时候在自己补充。接下来让我们一起了解一下触发器的使用! 一、触发器概述 1.1、什么是触发器 触发器(Trigger):监视某种情况,并触发某种操作。在MySQL Server里面也就是对某一个表的一定的操作,触发某种条件(Insert,Update,Delete 等),从而自动执行的一段程序。 注意:你必须拥有相当大的权限才能创建触发器(CREATE TRIGGER),如果你已经是Root用户,那么就足够
这个排序过程叫做全字段排序,因为需要返回的字段都放入了 sort_buffer 参与排序过程。
text类型的字段通常用来保存比较大的一些文本对象,除了text,blob类型也经常被使用,这两种类型之间的差别主要是blob能够保存二进制数据,例如图片信息等,而text只能保存字符数据,但是这两种数据类型都会存在一些性能问题,也就常说的表空间碎片,或者称之为表空间空洞,从而影响插入表的性能。解决这种性能问题通常可以采用optimeize table来对这类碎片表进行优化。这里我们还是通过例子来看这个问题:
一 前言 死锁,其实是一个很有意思也很有挑战的技术问题,大概每个DBA和部分开发同学都会在工作过程中遇见 。关于死锁我会持续写一个系列的案例分析,希望能够对想了解死锁的朋友有所帮助。 二 案例分析 2.1 环境说明 MySQL 5.6 事务隔离级别为RR
假设现在我们有3个node,6个shard,则每个node上分配2个shard,此时最多容忍1台机器挂了,因为2台机器有4个shard,能存放下3个primary shard。此时如果我们进行水平扩容,将node变为6个,则每个node有1个shard,每个shard能使用的IO/CPU/Memory资源更多,性能会更好。 另外假设我们现在还是3个node,但是将shard变为9个,则每个node有3个shard,此时虽然每个shard使用的资源少了,但是容错性提高了,最多能容忍2个node故障,因为剩余的1个node还有3个shard,能包含所有数据。
6.使用group_concat_max_len系统变量,你可以设置允许的最大长度。 程序中进行这项操作的语法如下,其中 val 是一个无符号整数:
1、先查询出90万+10条记录的id,回表查询数据,再将90万+10条完整记录发给MySQL以便筛选最后10条; 2、先查询出90万+10条记录的id,筛选出最后10条记录的id再回表查询,最后返回10条完整记录给MySQL。 在回表次数很多(limit决定)的情况下,显然第二种方法是比较快的,但是MySQL默认采用了第一种。
MVCC即多版本并发控制主要是为了解决数据库中并发事务读写的一致性问题,那么多个事务并发执行的时候事务的隔离到底是怎么实现的呢?Mysql默认的RR隔离级别是怎样避免不可重复读的问题呢?我们好好来分析一下。
在mysql中1075报错的原因是一个字段设置了自动递增,另外一个字段被设置为主键,发生冲突。
排序的字段可以根据具体需求进行选择,没有限制。排序的关键字可以使用 ASC 或者DESC。ASC 是按照升序进行排序的,是默认的排序方式,即 ASC 可以省略。SELECT 语句中如果没有指定具体的排序方式,则默认按 ASC 方式进行排序。DESC 是按降序方式进行排列。当然 ORDER BY 前面也可以使用 WHERE 子句对查询结果进一步过滤。
疑问1:上述SQL理应按id主键(聚簇索引)范围查找,为啥explain里的rows会多余两者之差呢?
环境: MySQL 5.7.25 主主架构 故障现象: 发现互相之间的同步均发生异常,两端均出现1236错误,在两个主节点上分别执行show slave status显示的关键信息如下:
随着互联网的发展,Java语言在金融服务业、电子商务、大数据技术等方面的应用极其广泛。Java安全编码规范早已成为SDL中不可或缺的一部分。本文以Java项目广泛采用的两个框架Hibernate和MyBatis 为例来介绍,如何在编码过程中避免SQL注入的几种编码方法,包括对预编译的深度解析,以及对预编译理解的几个“误区”进行了解释。备注,本文是Java语言安全编码会是系列文章的第一篇。
参考博客1给出了一种所谓的平滑帅气的秒级扩容的架构方案,但我个人却认为,这个看似没有什么问题的方案在实际中几乎没什么用处,业界也几乎不会用这种方案来进行扩容(分库分表)。为了便于说明这一点,本文先简单回顾下该方案,然后分析该方案为什么没有用,最后给出三种业界广泛使用的分库分表的平滑扩容方案。
1. 位运算符 位运算符是在二进制数上进行计算的运算符。位运算符会先将操作数变成二进制数,然后进行位运算,最后将计算结果从二进制变回十进制数。 MySQL支持的位运算符如下: [请添加图片描述] 1.1 按位与运算符 按位与(&)运算符将给定值对应的二进制数逐位进行逻辑与运算。当给定值对应的二进制位的数值都为1时,则该位返回1,否则返回0。 mysql> SELECT 1 & 10, 20 & 30; +--------+---------+ | 1 & 10 | 20 & 30 | +--------+-
如果数据库中存在相同主键的数据,replace的作用相当于修改操作;如果数据库中不存在相同主键的数据,replace相当于插入操作。
就访问数据库的应用程序而言,逻辑上只有一个表或者一个索引,但是实际上这个表可能由数十个物理分区对象组成,每个分区都是一个独立的对象,可以独自处理,可以作为表的一部分进行处理。
sqoop job --meta-connect jdbc:hsqldb:hsql://ip:port/sqoop --list
一、MySQL简单复制相关概念: mysql复制的意义:Mysql复制是使得mysql完成高性能应用的前提 mysql复制的机制: SLAVE端线程: IO thread: 向主服务请求二进制日志中的事件 当读取完毕后,IO线程将进行睡眠,当主服务器有新数据时,则主服务器唤醒从服务器的IO线程 SQL thread:从中继日志读取事件并在本地执行, 如果二进制日志开启式,同样会记录二进制日志,但为了节约空间和提高性能,需要关闭从服务器不能执行写操作,如果执行写操作则和主服务器不同步。 MASTER端
一 介绍 相信大部分DBA在和开发打交道的过程中,经常会遇到分页查询 order by 排序这样的需求。本文源于生产过程中的案例,5.6,5.7.16版本的数据库使用limit和order by
今天线上遇到一个问题,挺有意思,这里记录一下希望对大家有所帮助。某个表中,只有一条记录,发生高可用切换之后,自增id的值发生了变化,主从的自增id值不一致,导致数据写入报主键冲突的错误。
在真实生产环境过程中,我们会用到表,但是随着后面功能的迭代以及更新,会对老表进行一些更新,比如加字段,修改字段类型等,那么随着越来越多的脚本更新,以及同一个项目在不同甲方中,为了保证项目的稳定性,我们需要对一些sql语句实现可重复执行的操作。
之前遇到主从同步报错 1032. 在测试环境搭建一个库恢复数据到报错时间点, 然后该库回放BINLOG失败.
环视是一种非捕获分组,它根据某个模式之前或之后的内容匹配其他模式。环视也称为零宽断言,匹配条件不会出现在匹配结果中。环视包括:正前瞻;反前瞻;正后顾;反后顾。
上篇文章说了mvcc保证事务隔离性,隔离有脏读,不可重复读,幻读,而mysql有四种隔离级别,read uncommit,read commit,repeatable read,serializable,解决这些问题,mysql新版本默认是可重复读,利用mvcc解决幻读,read view链表组成有m_ids活跃事务id,最大事务id和最小事务id以及当前事务id,解决的是快照读,当前读还是会存在一定问题。
MySQL 全文索引默认是基于单字节流处理的,也就是按照单词与停止词(默认空格或者标点符号)来划分各个关键词,并且把关键词的文档 ID 和位置保存到辅助表用于后期检索。这种对英文,数字类的单字节字符处理很好, 比如“I am a boy!”, 每个单词很明确的用空格分割,后期查询只需要按照以空格为分隔符的单词检索就行,这些我前面三篇文章已经详细讲过。但是这种分割方法对多字节字符比如中文不是很友好,对中文来说每个字就是单独的字,无规律的字可以组成词,但是各个词之间不需要按照空格来分割。举个例子:“为中国人自豪” ,这句话包含了三个词“为”,“中国人”,“自豪”。如果按照默认的全文索引处理,搜索其中任何子句,结果肯定是出不来。这也间接导致大家说 MySQL 的全文检索结果不准确,不靠谱,其实并非如此,主要是 MySQL 全文索引对分词以及停止符界定有差异。例如下面,表 ft_ch ,有三条记录,怎么查都没有没有结果。
表的主键指的针对一张表中的一列或者多列,其结果必须能标识表中每行记录的唯一性。InnoDB 表是索引组织表,主键既是数据也是索引。
索引是MySQL的数据结构,关系着MySQL如何存储数据,查询数据;而如何操作数据,解决多线程时操作数据带来的问题,则需要通过事务来完成。
mysqld_multi设计用于管理在同一台机器上运行的多个mysqld进程,这些进程使用不同的socket文件并监听在不同的端口上。mysqld_multi可以批量启动、关闭、或者报告这些mysqld进程的状态。在这里我们通过这种方式来在同一个机器上启动多个数据库实例,并配置主从关系。
记得前些日子分享过一篇有关MySQL中事务的知识点,但当时对MySQL中的事务只是纯粹的知道如何使用,缺乏对理论的进一步认识,抽时间单独去了解了一下,便在做一个较为全面的总结.
群里一网友这两天刚入职新公司,遇到一个重启 MySQL 服务后,自动增长值丢失问题,差点背锅走人。下面我们一起来回顾一下这个问题。
如果该参数不开启,则对timestamp NOT NULL插入NULL值,不报错,无warning,插入后的值为当前时间
本文是MySQL(三)|《千万级大数据查询优化》第一篇:创建高性能的索引的一个补充。 主要包括如下几点:
今天早上在公司,遇到了一个系统负载的问题,问题的内容如下:某个从库上的系统负载从5月26日开始,一直处于比较高的状态,磁盘IO也比较高,这里我先截取一部分监控的曲线图:
这是去年在线上遇到了一个系统负载的问题,问题的内容如下:某个从库上的系统负载从5天前开始,一直处于比较高的状态,磁盘IO也比较高,这里我先截取一部分监控的曲线图:
一直以来,对于MySQL中的事务和锁的内容是浅尝辄止,没有花时间了解过,在一次看同事排查的故障中有个问题引起了我的兴趣,虽然过去了很久,但是现在简单总结一下还是有一些收获。 首先我们初始化数据,事务的
相信有不少同学都看过“DBA随笔”,幕后的作者是我前同事小叶,作为小叶的导师,我教过他正事,也教过一些坏的习惯,不过写笔记这个习惯算是小叶自己开窍了,他已经坚持了很长一段时间了,这股学习劲头值得点赞,圈子就这么大,其实要深耕做点事情靠的还是兴趣和坚持。
事务最经典常用的栗子可能就是转账:一个账户少钱了,哪另一个账户肯定要多钱,李永龙说过,亏本的买卖咱可不干,吃亏了不高兴!
分布式场景下如何进行快照读是一个很常见的问题,因为在这种场景下极易读取到分布式事务的“中间状态”。针对这一点,腾讯云数据库TDSQL设计了全局一致性读方案,解决了分布式节点间数据的读一致性问题。 近日腾讯云数据库专家工程师张文在第十二届中国数据库技术大会上为大家分享了“TDSQL全局一致性读技术”。以下是分享实录: 分布式下一致性读问题 近年来很多企业都会发展自己的分布式数据库应用,一种常见的发展路线是基于开源MySQL,典型方案有共享存储方案、分表方案,TDSQL架构是一种典型的分区表方案。 以图例的银
最近有表结构设计中出现了varchar(10000)的设计引起了大家的讨论,我们下面就来分析分析。
http://www.cnblogs.com/billyxp/p/3548540.html
例如当前表中有ID为1,2,3三条记录,把3删除,重启MySQL,新插入记录的ID从哪儿开始?
多值索引和基于多个字段的联合索引完全不同,联合索引是基于多个一维字段,比如字段 r1 int, r2 int,r3 int,这三个字段的组合是联合索引。一般用于三个字段的联合查找,比如 r1 = 1 and r2 = 2 and r3 = 2 等等。
领取专属 10元无门槛券
手把手带您无忧上云