MySQL Slave异常关机的处理
生产环境有一个MySQL的Master-Slave的复制。前一阵子机房网络升级,但是考虑到一般网络故障恢复之后,只需要start slave即可所以没有做任何的处理。但是第二天上班的时候,在Slave数据库上输入命令,start slave 不能重新启动复制。模拟环境如下在Slave上启动复制,报错如下复制过程出现主键重复了最后,使用statu...
binlog_format
Binlog_format参数也特别重要。从mysql5.1版本开始引入这个参数,该参数可以设置的值有STATEMENT\、ROW、MIXED;(1)STATEMENT格式和之前的mysql版本一样,二进制日志文件记录的是日志的逻辑失SQL语句。(2)在ROW格式下,二进制日志记录的不再是简单的SQL语句了,而是记录表的行更改情况,此时可以将InnoDB的事...
【SQL】表连接 --半连接
半连接: 当一张表在另一张表找到匹配的记录之后,半连接(semi-jion)返回第一张表中的记录。与条件连接相反,即使在右节点中找到几条匹配的记录,左节点的表也只会返回一条记录。另外,右节点的表一条记录也...
MySQL 面试题
MySQL DBA的基础面试题目1, mysql的复制原理以及流程。(1)先问基本原理流程,3个线程以及之间的关联。(2)再问一致性,延时性,数据恢复。(3)再问各种工作遇到的复制bug的解决方法3,问mysql中varchar与char的区别以及varchar(50)中的30代表的涵义。(1)v...
limit优化
先看一下分页的基本原理(我拿的是CSDN那个百万级数据库来测试!):SELECT * FROM `csdn` ORDER BY id DESC LIMIT 100000,2000;耗时: 0.813ms分析:对上面的mysql语句说明:limit 100000,2000的意思扫描满足条件的102000行,扔掉前面的100000行,返回最后的2000行。问题就在这里,如果是limit 100000,20000,需要...
varchar和char的区别
char是一种固定长度的类型,varchar则是一种可变长度的类型,它们的区别是:char(M)类型的数据列里,每个值都占用M个字节,如果某个长度小于M,MySQL就会在它的右边用空格字符补足.(在检索操作中那些填补出来的空格字符将被去掉)在varchar(M)类型的数据列里,每个值只占用刚好够用的字节再加上一个用来记录其长度的字...
MYSQL时间函数
获得日期+时间:now(),current_timestamp(), localtime(), localtimestamp(),sysdata()获得日期:curdata(),current_date()获得时间:curtime(),current_time()获得UTC日期时间函数:utc_date(),utc_time(),utc_timestamp()分别返回日期参数,在一周,一月,一年中的位置:dayofweek(),dayofmonth(),dayo...
视图和表的区别
1.视图是已经编译好的SQL语句,是基于SQL语句的结果集的可视化的表,而表不是。2.视图没有实际的物理记录,而基本表有。3.表是内容,视图是窗口。4.表占用物理空间而视图不占用物理空间,视图只是逻辑概念的存在,表可以即使对它进行修改,但视图只能创建的语句来修改。5.视图是查看数据表的一种方法,可...
MYSQL高性能学习查询心得
对于低效的查询,分两步分析很有效: 1.确认应用程序是否在检索大量超过需要的数据。这通常意味着访问了太多的行,但有时候也能是访问了太多的列 2.确认MySQl服务器层是否分析大量超过需要的数据行 消耗应用服务器的CPU和内存资源 1.查询不需要的记录 2.多表关联时返回全部列 3.总是取出全部列 ...
SQL注入攻击
SQL注入攻击指的是通过构建特殊的输入作为参数传入Web应用程序,而这些输入大都是SQL语法里的一些组合,通过执行SQL语句进而执行攻击者所要的操作,其主要原因是程序没有细致地过滤用户输入的数据,致使非法数据侵入系统。 归纳一下,主要有以下几点:1.永远不要信任用户的输入。对用户的输入进行...
MYSQL索引注意事项
选择合适的索引 1:对于单键索引,尽量选择针对当前Query过滤性更好的索引 2:在选择组合索引的时候,当前Query中过滤性最好的字段在索引字段顺序中排列越靠前越好 3:在选择组合索引的时候,尽量选择可以能够包含当前Query的where子句中更多字段的索引 4:尽可能通过分析统计信息和调整Query的写法来达...
内存表和临时表的区别
内存表:1. 参数控制:max_heap_table_size2. 到达上线后报错。3. 表定义保存在磁盘上,数据和索引保存在内存里面。4. 不能包含TEXT,BLOB等字段。临时表:1. 参数控制:tmp_table_size。2. 到达上线后创建文件在磁盘上。3. 表定义和数据都在内存里。4. 可以包含TEXT, BLOB等字段。由于直接使用临时表来创建中间...
对mysql explain讲的比较清楚的
在 explain的帮助下,您就知道什么时候该给表添加索引,以使用索引来查找记录从而让select 运行更快。如果由于不恰当使用索引而引起一些问题的话,可以运行 analyze table来更新该表的统计信息,例如键的基数,它能帮您在优化方面做出更好的选择。explain 返回了一行记录,它包括了 select语句中用到的各个表的信息。这...
mysql优化笔记
第一步 测量时间花在什么地方,无法测量就无法优化实际地讨论两种类型的性能剖析:基于执行时间的分析和基于等待的分析。基于执行时间的分析研究的是什么任务的执行时间最长,基于等待的分析则是判断任务在什么地方被阻塞的时间最长。理解性能优化1.值得优化的查询2.异常情况3.未知的未知4.被掩藏的细节对系统进...
Mysql源码分析2
get_options()出现在init_common_variables中Get server options from the command line, and perform related server initializations.struct system_variables global_system_variables;struct system_variables max_system_variables;system_variables 解释如下 How dynamically allocated system variab...
MYSQL源码分析1
MYSQL版本5.6.16THD继承于Statement,MDL_context_owner和Open_tables_state 位于sql_class.h中THD:每一个客户端连接时,创建一个独立的线程,THD作为线程/连接描述符。MDL_context_owner:待写Statement:对于一个连接中,一个独立的命令执行简短描述,一个连接中可能包含许多同时运行的命令状态THD作为...
Mysql的四种启动方式
mysql的四种启动方式:1、mysqld启动mysql服务器:./mysqld --defaults-file=/etc/my.cnf --user=root客户端连接:mysql --defaults-file=/etc/my.cnformysql -S /tmp/mysql.sock2、mysqld_safe启动mysql服务器:./mysqld_safe --defaults-file=/etc/my.cnf --user=root &客户端连接...
MYSQL数据库常用操作命令节选
一、数据库级别的1、查看当前系统上存在的数据库mysql> show databases;2、创建一个数据库mysql> create database zhanglin;3、切换到指定的数据库下mysql>USE DATABASE_NAME;4、删除数据库mysql>DROP DATABASE DATABASE_NAME;二、表的操作1、查询当前数据库中存在的表mysql>SHOW TABLES;2、创建表语法:CREA...
Mysql技术内幕——表&索引算法和锁
表4.1、innodb存储引擎表类型innodb表类似oracle的IOT表(索引聚集表-indexorganized table),在innodb表中每张表都会有一个主键,如果在创建表时没有显示的定义主键则innodb如按照如下方式选择或者创建主键。首先表中是否有唯一非空索引(unique not null),如果有则该列即为主键。不符合上述条件,innodb存储引擎会自动创建一个6字节大小的指针,rowid()。4.2、innodb逻辑存储结构innodb的逻辑存储单元由大到小分别是 tablespace,segment,extent,page(block)组成4.2.1、表空间(tablespace)所有数据都是存放在表空间中的,启用
MySQL内存参数及调整
MySQL内存参数及调整本文主要介绍MySQL的内存参数的作用及其对性能的影响和调整,以及MySQL的内存分配欢迎转载,请注明作者、出处。作者:张正blog:http://space.itpub.net/26355921&n...