MySQL数据库中like语句及相关优化器tips

背景

         MySQL中在对某个字段做包含匹配时可以用like

先看这个结构和结果

 

CREATE TABLE `tb` (  `id` int(11) NOT NULL AUTO_INCREMENT,  `user_id` bigint(20) DEFAULT NULL,  `title` varchar(128) NOT NULL,

  `memo` varchar(2000) DEFAULT NULL,

  PRIMARY KEY (`id`),

  KEY `title` (`title`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

 

 

mysql> explain select * from tb where title like ‘%abcd%’;

+—-+————-+——-+——+—————+——+———+——+——+————-+

| id | select_type | table | type | possible_keys | key  | key_len | ref  | rows | Extra       |

+—-+————-+——-+——+—————+——+———+——+——+————-+

|  1 | SIMPLE      | tb    | ALL  | NULL          | NULL | NULL    | NULL |    1 | Using where |

+—-+————-+——-+——+—————+——+———+——+——+————-+

1 row in set (1.65 sec)

 

MySQL5.5服务器命令选项中文版(复制相关部分)

Command-Line Format

–server-id=#

Option-File Format

server-id

Option Sets Variable

Yes, server_id

Variable Name

server_id

Variable Scope

Global

Dynamic Variable

Yes

Permitted Values

Type

numeric

Default

0

Range

0 .. 4294967295

         该选项对复制主、从服务器都是共有的,并在复制中使用以使主机和从机服务器能唯一识别自身。更多信息,参见16.1.3.2节,“复制主选项和变量”,16.1.3.3节,“复制从选项和变量”。

         在主机和每个从机上,你必须使用–server-id选项来建立一个在1到232-1范围内的唯一的复制ID。“唯一”意味着每个ID必须不同于其它任何复制主或从使用的ID。例如:server-id=3。

         如果你省略–server-id,默认ID为0,在这种情况下,主机拒绝来自所有从机的连接,并且从机拒绝连接到主机。更多信息,参见16.1.1.2节,“设置复制从配置”。

MySQL5.5数据库复制搭建报错之Could not initialize master info structure

导读

鉴于MySQL5.5数据库产品的性能提升不明显,软件产品稳定性不佳,且新增加的功能也不足突破,所以生产环境中只有几套应用使用MySQL5.5版本支撑,以培养与掌握MySQL5.5的经验和技术,所以个人对MySQL5.5系列的实战也不多。现有一个项目,因服务器配置的特殊性,以及业务特点、数据容量、数据访问等也非常特殊,不得不考虑采用MySQL5.5,且国内某mysql服务提供商技术人员指定要求的版本号为MySQL5.5.27。综合上述信息导致今天无意碰到一个MySQL数据库复制搭建过程中出现的错误信息,可能其他同行也可能会碰见,特此写一篇技术博文分享给大家。

(一)   环境描述

操作系统:Linux x3755-31 2.6.18-308.el5

硬件配置:2*8Core CPU,6*SAS*15K*600G,RAID1+0,256G MEM

全球级的分布式数据库 Google Spanner原理

Google Spanner简介

Spanner 是Google的全球级的分布式数据库 (Globally-Distributed Database) 。Spanner的扩展性达到了令人咋舌的全球级,可以扩展到数百万的机器,数已百计的数据中心,上万亿的行。更给力的是,除了夸张的扩展性之外,他还能同时通过同步复制和多版本来满足外部一致性,可用性也是很好的。冲破CAP的枷锁,在三者之间完美平衡。

Spanner是个可扩展,多版本,全球分布式还支持同步复制的数据库。他是Google的第一个可以全球扩展并且支持外部一致的事务。Spanner能做到这些,离不开一个用GPS和原子钟实现的时间API。这个API能将数据中心之间的时间同步精确到10ms以内。因此有几个给力的功能:无锁读事务,原子schema修改,读历史数据无block。

深度解读网站用户体验三要素(3):别让我烦

主笔:光明

这是网站用户体验三要素的完结篇,本文主要内容是:别让我烦。

用户都是喜欢偷懒的,如果你的网站操作效率很低,就会令用户烦躁,进而导致不好的体验,甚至出现坏口碑。有一个粗略的说话是,完成任务的难度与其所需步骤的平方成正比,那么,缩短完成路径就是帮用户偷懒,就是好的用户体验。

举个正面的网站实例来说明。登陆美国亚马逊网站,当你进入一个商品页面之后可以无刷新切换商品的规格,比如我要购买一台苹果笔记本电脑,我打开了商品页(如下),商品右侧会有个版本切换的选项,在这里我可以快速查看不同配置的电脑价格,只需将鼠标移动上去,商品图片、价格等信息就会自动发生变化。这种人性化的设计,为想要比较商品的多个版本的用户提供了极高的操作效率,用户自然喜欢。

深度解读网站用户体验三要素(2):别让我想

主笔:光明

懒惰是人性中的重要组成部分,用户通常不喜欢被强迫进行思考或学习,如果你的网站不好用,又不是唯一的选择,用户很可能迅速放弃离开。

上一篇文章介绍了《深度解读网站用户体验三要素(1):别让我等》,今天继续这个话题,分享第2篇:别让我想

用户不会使用一个网站绝对不是用户的错,他会打开电脑,会使用键盘和鼠标,会打开浏览器上网,经过这么步骤最终到达了你的网站,然后发现网站上一团糟,搞不懂这是什么,那是什么,也懒得学习如何使用,于是就会眼都不眨一下就关闭你的网站。这是很现实的一个用户行为。

在网站能够快速触达用户之后,网站运营人员面临的下一个重要问题就是:如何留住用户?

Transfer在MySQL数据库双主同步架构中的应用

有同学讨论到Transfer能否支持双主结构,答案是支持的,这里简要描述下。

背景

       Transfer既可以当作主从库之外的工具来用,也可以本身充当slave的角色。本文分别描述在这两种使用场景下的部署结构和切换动作。 

Slave模式

a)      结构

这个就是最简单的双主啦,Transfer呢?代码直接写到这两个Master里面啦,所以他们就是Transfer.