表示 进入内容 112042
« 先前的 10 新的记录 | 下一步 10 较早的记录 »
Displaying posts with tag: MySQL基础知识 (reset)
SQLIte这么娇小可爱,不多了解点都不行啊

在我眼里,MySQL和Oracle是这样的

而SQLite在是这样的

所以这么萌的数据库,我真的应该多了解她的。

简介

SQLite,是一款轻型的数据库,是遵守ACID的关系型数据库管理系统。它的设计目标是嵌入式的,目前Android和iOS的设备内置的都是SQLite数据库。SQLite虽然娇小,但也支持事务和多数的SQL92标准。

主要特点

  • Zero-Configuration 无需安装和管理配置。

  • Serverless 无需服务器支持。

  • Single Database File 数据文件存储在一个单一的磁盘文件。

  • Stable Cross-Platform Database File 数据库文件格式跨平台,无论是大小端,或者是32bit或64bit机器都没有关系

  • Compact …

[获取更多]
MySQL 5.7 传统复制到GTID在线切换

前题:

  1. 要求MySQL 5.7.6及以后版本。

  2. 所有组中成员gtid_mode 为off状态。

实现步骤:

  1. 所有的Server执行

set @@global.enforce_gtid_consistency = warn;

特别注意: 这一步是关建的一步使用不能出现警告。

2.所有的server上执行:

set @@global.enforce_gtid_consistency = on;

3.所有的Server上执行(不关心最先最后,但要执行完):

set @@global.gtid_mode = off_permissive;

  1. 执行:

set @@global.gtid_mode=on_permissive;

实质在这一步骤生的日志都是带GTID的日志了,这个步骤号称是不关心任何节点,但从实管理上推荐在slave上先执行,然后再去master上执行。

[获取更多]
MySQL索引之主键索引

导读

在MySQL里,主键索引和辅助索引分别是什么意思,有什么区别?

上次的分享我们介绍了聚集索引和非聚集索引的区别,本次我们继续介绍主键索引和辅助索引的区别。

1、主键索引

主键索引,简称主键,原文是PRIMARY KEY,由一个或多个列组成,用于唯一性标识数据表中的某一条记录。一个表可以没有主键,但最多只能有一个主键,并且主键值不能包含NULL。

在MySQL中,InnoDB数据表的主键设计我们通常遵循几个原则:

  • 采用一个没有业务用途的自增属性列作为主键;

  • 主键字段值总是不更新,只有新增或者删除两种操作;

  • 不选择会动态更新的类型,比如当前时间戳等。

[获取更多]
B+树索引和哈希索引的区别

导读

在MySQL里常用的索引数据结构有B+树索引和哈希索引两种,我们来看下这两种索引数据结构的区别及其不同的应用建议。

二者区别

备注:先说下,在MySQL文档里,实际上是把B+树索引写成了BTREE,例如像下面这样的写法:

CREATE TABLE t(
aid int unsigned not null auto_increment,
userid int unsigned not null default 0,
username varchar(20) not null default ‘’,
detail varchar(255) not null default ‘’,
primary key(aid),
unique key(uid) USING BTREE,
key (username(12)) USING BTREE此处 uname 列只创建了最左12个字符长度的部分索引
)engine=InnoDB;

一个经典的B+树索引数据结构见下图:

[获取更多]
如何成为MySQL DBA

       互联网高速发展的成功,得益于MySQL数据库的给力支持。MySQL本身发展的速度较快,性能方面提升显著,让传统企业也有想法使用MySQL提供服务。目前看来MySQL DBA的缺口非常大。所以欢迎加入到MySQL DBA的团队中来。

      有同学一提到MySQL DBA或是DBA都把高难度入门联系到一块。我从事MySQL DBA差不多10几年了,在这里我也给大家讲述一下怎么成为一名MySQL DBA, 少走湾路,快速成为MySQL DBA。

      首先MySQL大多是跑在Linux环境上的,所以我们需要学习一下Linux的知识,最基础的需要了解:

    • Linux的安装及目录结构意义

    • 常用的Linux命令,大概20多个

[获取更多]
linux上二进制部署mysql详细步骤(测试环境常用)

一、简介:

   关于在linux上二进制部署mysql,我其实现在linux已经很熟练了,那是一年前的曲折之路。不过这篇文章还是有参考意义,毕竟测试环境可以再3分钟就弄好mysql服务器.还是很happy的一件事情.之前笔记是参考别人写的,现在重新整理.主要问题是centos和ubuntu上,ubuntu上需要注意的事项等说明。

二、需求描述:

   搞了一天在linux下安装mysql,实在身心疲惫,不过最终还是成功安装上了,不知道为什么mysql 的rpm包安装起来不好使,rpm主要再redhat系列的linux发行版中,老是有问题。但是编译安装需要安装编译环境和编译比较耗时间.于是决定安装tarball(二进制包)的方式安装mysql。从网页上翻了好久找到了安装方法。

    我用的mysql的版本的是:mysql-5.5.42-linux2.6-x86_64.tar.gz

[获取更多]
EXPLAIN执行计划中要重点关注哪些要素

导读

EXPLAIN的结果中,有哪些关键信息值得注意呢?

MySQL的EXPLAIN当然和ORACLE的没法比,不过我们从它输出的结果中,也可以得到很多有用的信息。

总的来说,我们只需要关注结果中的几列:

列名 备注
type 本次查询表联接类型,从这里可以看到本次查询大概的效率
key 最终选择的索引,如果没有索引的话,本次查询效率通常很差
key_len 本次查询用于结果过滤的索引实际长度,参见另一篇分享(FAQ系列-解读EXPLAIN执行计划中的key_len)
[获取更多]
MySQL索引之聚集索引

在MySQL里,聚集索引和非聚集索引分别是什么意思,有什么区别?

在MySQL中,InnoDB引擎表是(聚集)索引组织表(clustered index organize table),而MyISAM引擎表则是堆组织表(heap organize table)。

也有人把聚集索引称为聚簇索引。

当然了,聚集索引的概念不是MySQL里特有的,其他数据库系统也同样有。

简言之,聚集索引是一种索引组织形式,索引的键值逻辑顺序决定了表数据行的物理存储顺序,而非聚集索引则就是普通索引了,仅仅只是对数据列创建相应的索引,不影响整个表的物理存储顺序。

我们先来看看两种存储形式的不同之处:

[获取更多]
解读EXPLAIN执行计划中的key_len

导读

EXPLAIN中的key_len一列表示什么意思,该如何解读?

EXPLAIN执行计划中有一列 key_len 用于表示本次查询中,所选择的索引长度有多少字节,通常我们可借此判断联合索引有多少列被选择了。

在这里 key_len 大小的计算规则是:

  • 一般地,key_len 等于索引列类型字节长度,例如int类型为4-bytes,bigint为8-bytes;

  • 如果是字符串类型,还需要同时考虑字符集因素,例如:CHAR(30) UTF8则key_len至少是90-bytes;

  • 若该列类型定义时允许NULL,其key_len还需要再加 1-bytes;

  • 若该列类型为变长类型,例如 VARCHAR(TEXT\BLOB不允许整列创建索引,如果创建部分索引,也被视为动态列类型),其key_len还需要再加 …

[获取更多]
清官谈mysql中utf8和utf8mb4区别

   一、简介

   MySQL在5.5.3之后增加了这个utf8mb4的编码,mb4就是most bytes 4的意思,专门用来兼容四字节的unicode。好在utf8mb4是utf8的超集,除了将编码改为utf8mb4外不需要做其他转换。当然,为了节省空间,一般情况下使用utf8也就够了。

   二、内容描述

   那上面说了既然utf8能够存下大部分中文汉字,那为什么还要使用utf8mb4呢? 原来mysql支持的 utf8 编码最大字符长度为 3 字节,如果遇到 4 字节的宽字符就会插入异常了。三个字节的 UTF-8 最大能编码的 Unicode 字符是 0xffff,也就是 Unicode 中的基本多文种平面(BMP)。也就是说,任何不在基本多文本平面的 Unicode字符,都无法使用 Mysql 的 utf8 字符集存储。包括 Emoji 表情(Emoji 是一种特殊的 Unicode 编码,常见于 ios 和 android …

[获取更多]
表示 进入内容 112042
« 先前的 10 新的记录 | 下一步 10 较早的记录 »