MySQL InnoDB索引创建语句
一、索引算法 一般,我们看到术语“索引”和“键”交换使用,但实际上这两个是不同的。索引是存储在数据库中的一个物理结构,键纯粹是一个逻辑概念。键代表创建来实施业务规则的完整性约束。索引和键的混淆通常是由于数据库使用索引来实施完整性约束。 单列索引:即一个索引只包含单个列,一个表可以有多个单列索引。 多列索引:即一个索引包含多个列,但是此时列的顺序也十分重要,因……
MySQL InnoDB索引设计策略
一、索引设计原则 在MySQL中常用的B+树索引分为聚簇索引和辅助索引,关于辅助索引,虽然个数没有限制(聚簇索引一个表只能由一个),但可以想想一下,任何事物都是有两面性的:建立索引,是为了提高查询性能,但这是以降低写入性能为代价的。因为所有索引,在表需要写入数据时,都需要去维护索引数据以保证所有索引都是最新的、最准确的,所以可想而知,索引越多,写入性能越差,……
MySQL InnoDB索引与算法介绍
一、索引介绍 数据库是用来存储数据的工具,存进去,是为了更方便地取出来,而且越快越好,这样对性能的要求就非常高了。在计算机上运行一个任务,一般有三部分涉及性能,分别是内存大小,CPU及磁盘的速度,而索引是一种存储方式,与它相关的最重要部分就是磁盘,所以磁盘性能的高低,直接影响了在数据库中查找数据的效率。另外,磁盘的性能与读写顺序有关,对于普通的机械硬盘,顺序……
通过学习Linux内存分配策略,搞明白进程OOM机制
第一章:学习Linux内存分配策略 今天想提到的是线上一个4G的RDS实例,发生了OOM(out of memory)的问题,MySQL进程被直接Kill掉了。在解释这个问题的时候,我们首先需要从Linux系统内存分配策略讲起。 一般写C语言程序,我们习惯使用malloc动态的申请内存空间(Java由JVM负责内存管理),malloc函数会向操作系统申请一段……
MySQL批量创建多库多表示例
由于业务需要对MySQL数据库进行分库分表操作,大概需要建立10个库,每个库根据日期建立一年的表,格式如下: 库:meta_file_1-10 表:meta_file_20170101-20171231 还好库和表名称是规律的,并且表结构相同,所以可以使用脚本处理。 CREATE TABLE mate_file_1( ……
MySQL特性及架构
一、MySQL数据库特性 1. 内部构件和可移植性 使用C和C++编写,保证了源代码的可移植性。 支持多种平台。 提供众多编程语言的API接口。 采用核心线程和完全多线程(使用多CPU)。 提供事务性和非事务性存储引擎。 使用极快的”B树”磁盘表和索引压缩。 极快的基于线程的内存分配系统。 提供TCP/IP、ODBC和JDBC等多种数据库连接途径。 存储器中……
Redis哨兵集群的应用(二)
Sentinel集群介绍 由上一篇文章:Redis哨兵技术的应用(一)我们知道了哨兵的作用以及工作原理。 其中配置哨兵服务时最重要的有这么一行配置: sentinel monitor mymaster 10.99.73.11 6379 1 1 ……
MySQL实时性能监控工具doDBA tools
操作系统及MySQL数据库的实时性能状态数据尤为重要,特别是在有性能抖动的时候,这些实时的性能数据可以快速帮助你定位系统或MySQL数据库的性能瓶颈,就像你在Linux系统上使用「top,sar,iostat」等命令工具一样,可以立刻定位OS的性能瓶颈是在IO还是CPU上,所以收集/展示这些性能数据就更为重要,那都有哪些重要的实时性能状态指标可以反应出系统和……
找出MySQL服务器发生SWAP的原因?
首先,讲一下MySQL的内存消耗分为: 会话级别的内存消耗:如 sort_buffer_size 等,每个会话都会开辟一个 sort_buffer_size 来进行排序操作。 全局的内存消耗:例如 innodb_buffer_pool_size 等,全局共享的内存段。 关于会话级的内存消耗解释如下: read_buffer_size,sort_buffe……
MySQL 5.7:多线程备份工具mysqlpump使用
一、mysqlpump介绍 MySQL在备份方面包含了自身的mysqldump工具,但其只支持单线程工作,这就使得它无法迅速的备份数据。所以就有人写了mydumper工具,支持多线程,并且是行级粒度,支持正则匹配多数据库。MySQL官方当然也意识到了这个问题,所以从MySQL 5.7开始就推出了mysqlpump工具,mysqlpump相对于之前的逻辑备份工……
MySQL为什么要关闭Query Cache?
当你的数据库打开了Query Cache(简称QC)功能后,数据库在执行SELECT语句时,会将其结果放到QC中,当下一次处理同样的SELECT请求时,数据库就会从QC取得结果,而不需要去数据表中查询。 在这个”Cache为王”的时代,我们总是通过不同的方式去缓存我们的结果从而提高响应效率,但一个缓存机制是否有效,效果如何,却是一……