标签归档:mysql

MySQL的Docker镜像制作详解

一、环境描述

1. 宿主机

  • CPU:双核
  • 内存:4 GB
  • 硬盘:120 GB
  • IP地址:192.168.190.128
  • 操作系统:CentOS 7.4 x86_64 Minimal

2. Docker

3. 基础镜像

4. MySQL

  • 版本:5.7.21
  • 安装方式:YUM Repo

二、创建必要的文件

1. 创建服务启动脚本

继续阅读MySQL的Docker镜像制作详解

通过SQL语句查看MySQL数据库的表空间状态

1. 查看数据库的索引空间大小

在MySQL Workbench中运行以下SQL语句:

  1. -- GB为单位
  2. SELECT
  3. CONCAT(ROUND(SUM(index_length)/(1024*1024*1024), 6), ' GB') AS 'Total Index Size'
  4. FROM
  5. information_schema.TABLES
  6. WHERE
  7. table_schema LIKE 'database';
  8. -- MB为单位
  9. SELECT
  10. CONCAT(ROUND(SUM(index_length)/(1024*1024), 6), ' MB') AS 'Total Index Size'
  11. FROM
  12. information_schema.TABLES
  13. WHERE
  14. table_schema LIKE 'database';

继续阅读通过SQL语句查看MySQL数据库的表空间状态

sysbench使用教程

一、环境描述

此次使用的虚拟机环境如下所示:

  1. CPU:双核 2.4GHz
  2. 内存:4 GB
  3. 硬盘:120 GB
  4. IP:192.168.21.129
  5. 操作系统:CentOS 6.6 x86_64
  6. MySQL:按照《在CentOS上安装MySQL数据库》安装

二、 编译安装sysbench

1. 下载并解压sysbench源码包:

  1. yum install -y automake libtool
  2. cd /root/Downloads/
  3. wget http://downloads.mysql.com/source/sysbench-0.4.12.10.tar.gz
  4. tar zxvf sysbench-0.4.12.10.tar.gz

2. 编译安装sysbench:

  1. cd sysbench-0.4.12.10
  2. ./configure --prefix=/usr/local/sysbench --exec-prefix=/usr/local/sysbench --with-mysql --with-mysql-includes=/usr/local/MySQL/include/ --with-mysql-libs=/usr/local/MySQL/lib/
  3. make && make install

3. 将sysbench加入环境变量:

  1. sed -i '80s/PATH=/PATH=\/usr\/local\/sysbench\/bin:/' /etc/profile
  2. sed -i '81a\export LD_LIBRARY_PATH=/usr/local/MySQL/lib' /etc/profile
  3. source /etc/profile

二、使用方法

1. 常用选项

继续阅读sysbench使用教程

使用MERGE存储引擎实现MySQL的分表机制

当一张表的数据量达到上百万条记录时,单台MySQL数据库采用传统的单表方式就很有可能无法满足业务的性能需求。解决这种性能问题的技术方案很多,包括分表、分库或搭建MySQL集群,每种技术方案又分别有若干种实现方式。本文将通过实例描述如何使用MERGE存储引擎实现MySQL的分表机制,不会涉及其他的技术方案或实现方式。

一、建立数据库

继续阅读使用MERGE存储引擎实现MySQL的分表机制

如何查看MySQL中的数据大小?

以下方法可用于查看MySQL中各个级别数据的大小:

1. 查看MySQL中所有数据的大小

  1. -- 使用信息数据库
  2. use information_schema;
  3. -- 查看所有数据的总大小
  4. select concat(round(sum(DATA_LENGTH/1024/1024),2),'MB') as data from TABLES;

2. 查看MySQL中指定数据库的大小

  1. -- 使用信息数据库
  2. use information_schema;
  3. -- 查看指定数据库的大小
  4. select concat(round(sum(DATA_LENGTH/1024/1024),2),'MB') as data from TABLES where table_schema=<schema_name>;

3. 查看MySQL中指定表的大小

  1. -- 使用信息数据库
  2. use information_schema;
  3. -- 查看指定表的大小
  4. select concat(round(sum(DATA_LENGTH/1024/1024),2),'MB') as data from TABLES where table_schema=<schema_name> and table_name=<table_name>;

注意

继续阅读如何查看MySQL中的数据大小?

MySQL的Query Cache详解

一、原理概述

Query Cache就是把“查询返回的结果”缓存起来。但是,仅仅只是缓存“查询返回的结果”,其实是不准确的,Query Cache还会缓存查询语句,在内存中将“查询语句”和“查询返回的结果”映射起来。

当MySQL接收到一条SELECT类型的查询语句时,MySQL会对这条查询语句进行hash计算而得到一个hash值。然后,通过该hash值到Query Cache中去匹配。如果没有得到匹配结果,则会将这个hash值存放在一个hash链表中,同时将此次查询的结果存放至缓存中。存放hash值的链表的每个节点都会存放相应查询返回结果在缓存中的地址,以及该次查询所涉及到的一些表的相关信息。如果通过hash值匹配到相同的查询,则会直接将缓存中相应的查询结果返回给客户端。如果MySQL的任何一张表中的任何一条数据发生了变化,便会通知Query Cache,将和这张表相关的查询缓存全部失效,并释放占用的内存空间。修改表数据的操作包括:INSERTUPDATEDELETETRUNCATEALTER TABLEDROP TABLEDROP DATABASE等等。

继续阅读MySQL的Query Cache详解