7. 备份和恢复 本章主要会介绍: 1.备份的类型:逻辑备份,物理备份,全备和增量4种 2.创建备份的方法
3.还原方法,包括还原到时间点 4.备份计划,压缩和加密 5.表维护,恢复损坏的表 7.
【服务器】 【mysql】 【SQL】 【LOG】 【数据库】 【shell】 【索引】 …
一 引子
在MySQL的官方手册上有这么一句话:
the optimizer can estimate the row count for each range using dives into the index or index statistics.
这是在说: 优化器为每一个范围段(如“a IN (10, 20, 30)”是等值比较, 括3个范围段实则简化为3个单值,分别是10,20,30)估计每个范围段(用范围段来表示是因为MySQL的“range”扫描方式多数做的是范围扫描,此处单值可视为范围段的特例)中包括的元组数, 而估计方法有2种,一是dive到index中即利用索引完成元组数的估算,简称index dive; 二是使用索引的统计数值,进行估算.
相比这2种方式,在效果上:
1 index dive: 速度慢,但能得到精确的值(MySQL的实现是数索引对应的索引项个数,所以精确)
2 index statistics: …
[获取更多]最近碰到一个慢SQL问题,解决过程有点小曲折,和大家分享下。 SQL本身不复杂,表结构、索引也比较简单,不过个别字段存在于多个索引中。
CREATE TABLE `pre_forum_post` ( `pid` int(10) unsigned NOT NULL, `fid` mediumint(8) unsigned NOT NULL DEFAULT '0', `tid` mediumint(8) unsigned NOT NULL DEFAULT '0', `first` tinyint(1) NOT NULL DEFAULT '0', `author` varchar(40) NOT NULL DEFAULT '', `authorid` int(10) unsigned NOT NULL DEFAULT '0', `subject` varchar(80) NOT NULL DEFAULT '', `dateline` int(10) unsigned NOT NULL DEFAULT '0', `message` mediumtext NOT NULL, `useip` varchar(15) NOT NULL DEFAULT '', `invisible` tinyint(1) NOT NULL DEFAULT '0', `anonymous` tinyint(1) NOT NULL DEFAULT '0', `usesig` tinyint(1) NOT NULL DEFAULT '0', `htmlon` tinyint(1) NOT NULL DEFAULT '0', `bbcodeoff` tinyint(1) NOT NULL DEFAULT '0', `smileyoff` tinyint(1) NOT NULL DEFAULT '0', `parseurloff` tinyint(1) NOT NULL …[获取更多]
一 明确IN/EXISTS的语义
1 “expression IN (subquery)”这样的形式,表示一个表达式变量在一个子查询中存在,其结果是布尔值,TRUE或FALSE.
如果subquery 的结果中有重复值,则只要这样的值存在一次,IN格式的子查询结果就为TRUE,所以我们可以把 subquery表意为 “DISTINCT subquery”.
所以,“expression IN (subquery)”这样的形式其实表达的就是半连接的语义.
2 “EXISTS (subquery)”这样的形式,表示在一个子查询中存在子查询指定的情况,其结果是布尔值,TRUE或FALSE.
如果subquery 的结果中有重复值,则只要这样的值存在一次,EXISTS格式的子查询结果就为TRUE,所以我们可以把 subquery表意为 “只要有一个存在就为TRUE”.
所以,“expression IN (subquery)”这样的形式其实表达的也是半连接的语义.
…[获取更多]背景:RDS Mysql采用的binlog 格式默认为ROW,在Mysql 5.6的版本之前,Mysql每次列的修改(update)都需要记录表中所有列的值。这样就存在一个问题,如果表中包含很多的大字段,表的单行长度就会非常长,这样每次update就会导致大量的 binlog空间生成。针对这个问题,在mysql 5.6中进行了改进,复制支持”row image control” ,只记录修改的列而不是行中所有的列,这对一些包含 BLOGs 字段的数据来说可以节省很大的处理能力,因此此项改进不仅节省了磁盘空间,同时也提升了性能:
-
binlog_row_image Before image …
个人最近几年内整理过的PPT,都放在百度文库上了,大家可以看看 :)
MySQL tpch测试工具简要手册 高效Linux SA PC服务器阵列卡管理简易手册 服务器基准测试 MySQL数据库设计、优化 …
[获取更多]早上值班同事在旺旺群里面贴了一条非常复杂的SQL,用户从本地迁移到RDS Mysql出现严重性能下降,同样的数据和表结构下,在本地的数据库上只要不到1s的时间,但是在rds上好几分钟都没响应。
碰到这类问题需要考虑以下一些因素:
a.数据库的版本不同(不同的版本优化器策略不一样,或者异构数据库间的迁移:oracle–>mysql,sqlserver–>mysql),导致sql执行计划不同,最后导致sql执行时间不同;
b.数据库的配置不同(不同的内存配置,参数设置–query cache是否打开),导致sql执行时间不同;
c.数据库的数据量不同(系统遇到bug,生成了大量的垃圾数据),导致sql执行时间不同;
根据以上线索,用户是刚刚从线下迁移到RDS的,所以数据量和表结构是相同的;
…
[获取更多]8月2号,适逢中国传统佳节七夕节,这是中国传统节日中最具浪漫色彩的一个节日。它来自于牛郎与织女的传说。由于古代女子希望以织女为榜样。所以每逢七姐诞,她们都会向七姐献祭,祈求自己能够心灵手巧、获得美满的姻缘。我们选择在这一天举办活动,也期望在聊技术的同时,某些志同道合的俊男美女能在热烈的讨论中摩擦出爱情的花火,留下一段美事也是ACMUG的佳话。
本次活动有两个主题,分别是来自 CNTV的古雷古大师的《InnoDB Page一瞥》和来自新浪网的李涛带来的《新浪数据库自动化运维平台演进》。
在《InnoDB Page一瞥》中,古大师首先跟大家解释了一下什么是InnoDB Page,让大家有个初步的认识,然后详细介绍了在源码中InnoDB Page的读取,如何进行查询,index的遍历,以及OverFlow …
[获取更多]