数据库
kikajack
这个作者很懒,什么都没留下…
展开
-
MySQL异常记录
1.基本知识1.MySQL的配置文件,调试方式在Windows中,名为my.ini,而在Linux中则为my.cnf,路径默认为/etc/my.cnf。可以用#locate my.cnf命令找出所有配置文件。 MySQL无法启动时,可以通过#mysqld --console 方式在启动时显示详细信息。所有的异常会列出。2.启动,停止,重启(默认情况下)#service mysql start#s原创 2017-01-10 14:43:53 · 515 阅读 · 0 评论 -
MySQL Performance Schema
MySQL 官方手册 参考资料1 参考资料2 参考资料3MySQL 的 Performance Schema 功能使用 performance_schema 数据库,Performance Schema 默认启用,可以关闭。performace_schema 是 MySQL 5.7 中默认包含的数据库,其中的表可以分为这几类:配置相关的 Setup 表实例相关的 Instance...转载 2018-04-18 18:04:09 · 460 阅读 · 0 评论 -
MySQL 基准测试
这是《高性能 MySQL(第三版)》第二章的读书笔记。基准测试(benchmark)是针对系统的压力测试,用于掌握系统行为或重新系统的某个状态。sysbench 是常用的 MySQL 基准测试工具。1. 为何需要基准测试通过基准测试,可以方便有效的学习到系统在给定的工作负载下会发生什么。重现并解决异常验证假设测试系统当前运行情况,以确认优化的效果模拟更高的负载,以找出系...原创 2018-04-18 18:38:12 · 247 阅读 · 0 评论 -
mysqladmin - 管理 MySQL 服务器、获取运行状态
官方文档mysqladmin 是管理 MySQL 服务器的客户端,可以用来检测服务器的配置和当前状态、创建和删除数据库等。1. mysqladmin 的调用语法shell> mysqladmin [options] command [command-arg] [command [command-arg]] ...2.mysqladmin 支持的命令mysq...原创 2018-04-19 21:18:41 · 2499 阅读 · 0 评论 -
MySQL 中的 information_schema 数据库
1. 概述information_schema 数据库跟 performance_schema 一样,都是 MySQL 自带的信息数据库。其中 performance_schema 用于性能分析,而 information_schema 用于存储数据库元数据(关于数据的数据),例如数据库名、表名、列的数据类型、访问权限等。information_schema 中的表实际上是视图,而不是基本...原创 2018-04-24 15:48:57 · 68902 阅读 · 6 评论 -
Schema 与数据类型优化
这是《高性能 MySQL(第三版)》第四章《Schema 与数据类型优化》的读书笔记。1. 选择优化的数据类型数据类型的选择原则:越小越好:选择满足需求的最小类型。注意,增大数据类型的范围是耗时操作,尽量避免。简单:整型比字符操作代价更低。尽量避免 NULL 列:列最好指定为 NOT NULL,除非确实可以是 NULL。如果查询中包含可为 NULL 的列,会使索引、索引统计和...原创 2018-05-02 18:06:01 · 227 阅读 · 0 评论 -
第五章 创建高性能的索引
这是《高性能 MySQL(第三版)》第五章的读书笔记。索引在 MySQL 中也叫键(Key),是存储引擎用于快速找到记录的一种数据结构。表的数据量增大时,索引对良好的性能非常关键。索引是优化查询性能的最有效的手段。1. 索引基础MySQL 中,存储引擎先在索引中找到对应值,然后根据匹配的索引记录找到对应的数据行。mysql> SELECT * FROM blog.us...原创 2018-05-09 17:20:39 · 362 阅读 · 0 评论 -
MySQL 安装示例数据库(employee、world、sakila、menagerie 等)
sakila 示例数据库官方资料及安装说明,注意查看示例数据库支持的版本是否匹配你的数据库。为了测试,有时候需要大量的数据集,MySQL 官方提供了用于测试的示例数据库,下载页面在 这里。下面以 sakila 数据库为例,讲讲如何安装。1. 下载在官网下载页面的 Example Databases 这一栏,可以下载示例数据库。Linux 系统下载对应的 tar.gz 压缩文...原创 2018-05-03 15:50:14 · 9396 阅读 · 0 评论 -
MySQL 服务器性能剖析
这是《高性能 MySQL(第三版)》第三章的读书笔记。关于服务,常见的问题有:如何确认服务器是否发挥了最大性能找出执行慢的语句,为何执行慢为何在用户端发生间歇性的停顿、卡死通过性能剖析(profiling)分析服务器的性能并找出花费时间最多的地方,有助于解决上述问题。1. 性能优化简介性能通常可以认为就是响应时间(Latency,延迟),而性能优化就是减少响应时间。...原创 2018-04-25 17:07:57 · 582 阅读 · 0 评论 -
MySQL 查询性能优化 - EXPLAIN 命令
查询优化的官方文档在 这里。 EXPLAIN 的输出格式 译文1. MySQL 架构1.1 MySQL 的简化架构如下:用户连接层 ↓ ↓ ↓ ↓ ↓ ↓---------------------------------------------------------------------+----...原创 2018-05-08 15:06:21 · 264 阅读 · 0 评论 -
MySQL 导入导出 CSV 文件
导入导出常见问题ERROR 1290 (HY000): The MySQL server is running with the --secure-file-priv option so it cannot execute this statement数据中的第一个字段始终报错部分数据保存失败,且有异常数据导入参考:LOAD DATA INFILE 语法的官方手册...原创 2018-05-31 20:27:31 · 34097 阅读 · 2 评论 -
mysqldump - 备份 MySQL 数据库
参考资料备份备份所有数据库中的所有数据(包括系统数据库) –all-databases通过 --all-databases 选项备份所有的数据库:mysqldump -uroot -p --all-databases >/tmp/all.sql备份指定数据库中的所有数据 –databases通过 --databases 选项(只有一个数据库时可以省略)指定要备份的数据...原创 2018-07-24 17:24:56 · 437 阅读 · 0 评论 -
CentOS7-安装MySQL5.7
本文写于2017年5月9日,有一定的时效性。1.介绍Oracle收购了MySQL后,有不再开源的风险,CentOS7已经不再默认安装MySQL,而是改为默认安装MariaDB(MySQL的一个分支版本,兼容MySQL)。并且CentOS 7的yum源中没有安装MySQL所需的mysql-sever文件,需要去MySQL官网下载rpm文件。2.步骤参考地址:https://d原创 2017-05-09 21:20:48 · 596 阅读 · 0 评论 -
MySQL 对比数据库的表结构
有时候,需要对比一下测试环境和生产环境中,数据库的表结构是否有所差异。有两个常用的工具。AmpNmp.DatabaseCompareGUI 界面,支持多种数据库(MySQL、SQL Server、SQLite)简单高效,推荐。官方下载地址及文档 百度网盘下载地址mysqldiff官方文档 官方下载地址下载安装mysqldiff 是命令行工具,其优点是可以直接...原创 2018-08-10 17:35:45 · 4711 阅读 · 0 评论 -
MySQL 编码:utf8 与 utf8mb4,utf8mb4_unicode_ci 与 utf8mb4_general_ci
参考:mysql字符集小结utf8mb4 已成为 MySQL 8.0 的默认字符集,在MySQL 8.0.1及更高版本中将 utf8mb4_0900_ai_ci 作为默认排序规则。新项目只考虑 utf8mb4UTF-8 编码是一种变长的编码机制,可以用1~4个字节存储字符。因为历史遗留问题,MySQL 中的 utf8 编码并不是真正的 UTF-8,而是阉割版的,最长只有3个字节。当遇到占4...原创 2018-11-30 22:35:38 · 41455 阅读 · 1 评论 -
MySQL 连接查询、联合查询和子查询
准备测试数据create table class( cid int(10), cdesc varchar(20));create table student( sid int(10), name varchar(20), age int(3), cid int(10));create table teacher( tid int(10), name varchar(2...原创 2019-09-20 19:44:51 · 776 阅读 · 0 评论 -
MySQL - explain 输出信息详解
常用 SQL(假设表名是 student)连接查询、联合查询、子查询:查看表结构:show create student;desc student;增删索引:增加主键:alter table class add constraint primary key cid_pk(cid);删除主键:alter table class drop primary key;增加索引:alter ...原创 2019-09-20 19:59:26 · 367 阅读 · 0 评论 -
CentOS7 - 安装 MariaDB
1 安装并启动 MariaDBMariaDB 采用 Percona 的 XtraDB 存储引擎替代 MySQL 的 InnoDB,XtraDB 完全兼容 InnoDB。1.1 安装MySQL 与 MariaDB 版本对比: MySQL 版本 MariaDB 版本 主要特点 5.5 5.5 5.6 10 5.7 1...原创 2018-04-17 23:19:16 · 416 阅读 · 0 评论 -
sysbench - 数据库功能及性能测试工具
sysbench 的 GitHub 参考资料1.0 之后的版本使用方法跟之前的有所区别,下面所有内容基于 1.0.9 版本。另外,为了方便管理测试,最好不要通过命令直接运行测试,而是写成脚本自动化执行测试。1. 安装及简介Linux 各大发行版通过自带安装工具直接安装即可,RHEL/CentOS 的安装命令如下:sudo yum -y install sysbench...原创 2018-04-17 18:25:24 · 21586 阅读 · 0 评论 -
MySQL1 - 数据库基础
1. 名词数据库:database数据库管理系统:DBMS(Database Management System)数据库系统:DBS(Database System) = DBMS + DB数据库管理员:DBA(Database Administrator)行/记录:row/record,表中的一行(一条记录),是一组相关数据,比如用户信息。列/字段:column/field,每一...原创 2017-04-28 17:09:51 · 618 阅读 · 0 评论 -
MySQL2-字段类型和字段属性
MySQL的数据类型分为3类:数值型,字符串型,日期时间型。 1.数值型数值型分为整数型和小数型。可以有符号(Signed)和无符号(Unsigned)。默认是有符号类型,可以在类型后加UNSIGNED指定为无符号类型int unsigned。1.整数型 TINYINT:用1个字节存储,范围0~255或-128~127。 SMALLINT:用2个字节存储,范围0~6553原创 2017-05-01 00:29:26 · 2284 阅读 · 0 评论 -
MySQL3-关系和范式
1.关系数据库设计,需同时考虑实体设计(数据表)和实体间的关系设计。1.一对一一张表中的一条记录一定只能与另一张表中的一条记录对应。用具有唯一性的字段来关联两张表。 数据可以合并到同一张表中。 例如,人与身份证号。2.一对多一张表中的一条记录可以对应另一张表中的多条记录,但第二张表中的一条记录只能对应第一张表中的一条记录。需要在第二张表中增加字段关联第一张表。 例如,人与原创 2017-05-03 17:38:43 · 421 阅读 · 0 评论 -
MySQL4-增删改查进阶
1. 主键冲突新增数据时,如果主键对应的数据已经存在,则会报错:ERROR 1062 (23000): Duplicate entry '2' for key 'PRIMARY'ON DUPLICATE KEY UPDATE 语法通过 ON DUPLICATE KEY UPDATE 语法,可以在 INSERT 失败时自动转为执行 UPDATE 操作:INSERT INT...原创 2017-05-03 23:20:40 · 556 阅读 · 0 评论 -
MySQL8-联合查询
1.基本语法UNION将多次查询(多条SELECT语句)在记录上进行拼接,不会增加字段。 每条SELECT语句获取记录的字段数必须一样多,但类型可以不一致。 语法:SELECT语句1 UNION [UNION选项] SELECT语句2; UNION选项和SELECT选项一样,分为ALL和DISTINCT,区别是联合查询时默认为DISTINCT去重,一般查询则默认ALL所有。SELECT * F原创 2017-05-14 11:49:47 · 601 阅读 · 0 评论 -
MySQL9-子查询
1.分类每次查询都有先明确数据源。1.按位置分类按照子查询语句在外部查询语句中出现的位置分为3类: - FROM子查询:子查询语句跟在FROM后 - WHERE子查询:子查询语句在WHERE条件中 - EXISTS子查询:子查询语句出现在EXISTS语句里面2.按结果分类根据子查询得到的数据进行分类: - 标量子查询:子查询得到的结果是一行一列,子查询语句在WHERE之后。 - 列子查询:原创 2017-05-14 16:05:50 · 318 阅读 · 0 评论 -
MySQL10-视图
1.用途视图是一个虚拟表,只有结构没有数据,其内容由查询定义。视图的结构从已有的表(称为基表underlying table)中产生。1.视图可以节省SQL语句:将复杂的查询语句用视图保存,以后可以对视图进行操作。2.数据安全:视图操作主要针对查询,如果删除视图不会影响数据。3.视图往往在大项目中使用,而且是多系统使用:可以隐藏指定的数据。4.视图可以更好的进行权限控制:保护数据库的信息。2.创建视原创 2017-05-14 19:23:11 · 310 阅读 · 0 评论 -
MySQL11-MyISAM和InnoDB存储引擎区别
1.MyISAM1.引擎特性不支持事务,不支持外键,表级锁,批量插入速度高,支持全文索引,支持B-Tree索引,不支持哈希索引和集群索引,数据可压缩,磁盘空间和内存占用低。2.数据存储方式新建数据表时,如果存储引擎ENGINE选择MyISAM,会在对应数据库下创建三个文件:*.frm数据表结构文件frame,*.MYD数据表数据文件data,*.MYI数据表索引文件index。 MyISAM的表结原创 2017-05-14 22:54:28 · 345 阅读 · 0 评论 -
MySQL12-数据备份与还原
1.数据表备份(仅限MyISAM引擎)每一个用MyISAM做引擎的表,在数据库目录下有三个文件,*.frm数据表结构文件,*.MYD数据表数据文件,*.MYI数据表索引文件。直接备份这三个文件即可完成数据表的备份。2.单表数据备份1.备份将表中的一部分或所有的数据保存到外部文件。每次只备份一张表,且只备份数据(不备份表结构和索引)。 SELECT */字段列表 INTO OUTFILE '文件所在原创 2017-05-15 00:14:45 · 247 阅读 · 0 评论 -
MySQL7-外键
外键:表中某个字段指向另一张表中的主键时,这个字段就是外键。外键字段所在表是子表,另一张表是父表。 创建外键时,要求此字段必须是索引,如果不是索引会在创建外键前自动为其添加索引。但删除外键时,不会自动删除索引。1.创建外键1.创建表的时候创建外键foreigne key(字段名) references 表名(字段名) 例如:create table student(id原创 2017-05-13 15:14:46 · 314 阅读 · 0 评论 -
MySQL5-连接查询
连接查询可以实现多个表的查询,一次取出多个表中的数据。 连接查询可分为四种:内连接,外连接,交叉连接,自然连接。 如果连接查询的不同表有同名字段,必须加表名或表名的别名来区分。1.内连接[INNER] JOIN数据库的默认查询方式,INNER可以省略不写。 从左表取出记录后,去匹配右表中的记录,如果满足条件则记录保留,否则舍弃。 语法:左表 INNER JOIN 右表 ON 左表.字段=右表原创 2017-05-06 16:32:08 · 474 阅读 · 0 评论 -
MySQL6-PHP和MySQL
1.PHP的MySQL扩展参考:http://php.net/manual/zh/mysqli.overview.php PHP本身不能连接数据库,需要通过扩展才可以连。常用的MySQL数据库扩展有3种: - mysql扩展(不建议):纯面向过程。老旧,已不再开发只维护。 - mysqli扩展(首选):部分面向对象,部分面向过程。支持事务,支持多语句执行,支持prepared语句。 -原创 2017-05-06 17:58:25 · 260 阅读 · 0 评论 -
MySQL13-事务
1.概述事务:一系列要连续发生的操作。 事务安全:保护连续操作同时发生或同时不发生的机制。保护了数据的完整性。2.事务操作事务分两种:自动事务(默认的)和手动事务。 在数据库目录的data目录下,有ib_logfile0和ib_logfile1两个事务日志文件。开启事务后,所有的操作都会经过事务日志文件中转。 建立测试数据表并插入测试数据:CREATE TABLE accou原创 2017-05-17 11:21:59 · 259 阅读 · 0 评论 -
MySQL14-变量
1.系统变量系统变量用来控制服务器的表现,大部分用不到。例如version,auto_commit,auto_increment_offset,character_set_result。1.查看系统变量show variables; -- 查看所有的系统变量show warnings; -- 查看系统警告信息select @@version,@@character_set_result; --原创 2017-05-17 22:57:39 · 283 阅读 · 0 评论 -
MySQL15-触发器
不建议使用,参考这里1.概述触发器trigger:事先为某张表绑定好一段代码,当表中的某些内容发生改变的时候(增删改),系统自动触发代码执行。事件类型:增insert,删delete,改update三种类型。触发时间:前before,后after。触发对象:表中的每一条记录(行)。在一张表中,同样触发时间同样类型的触发器只能有一个,所以一张表中最多有6个触发器(BEFO...原创 2018-02-01 20:45:10 · 177 阅读 · 0 评论 -
MySQL 架构
这是《高性能 MySQL(第三版)》第一章的读书笔记。1. MySQL 逻辑架构在 MySQL 的架构中,查询处理及其他系统任务跟数据的存储提取相分离。这个特性使得 MySQL 的用户可以自由选择不同的存储引擎。常用的存储引擎有 MyISAM 和 InnoDB。MySQL 的架构一般分为三层:服务层:维护连接池,实现用户的认证授权,响应用户请求。核心层:维护查询缓存,解析 ...原创 2018-04-15 10:42:49 · 809 阅读 · 0 评论 -
MySQL - 慢查询日志
开启慢查询日志通过 set 命令可以临时开启慢查询日志,MySQL 重启后修改丢失。如果想要永久开启,则需要修改配置文件,Linux 中是 /etc/my.conf 文件。临时开启慢查询日志mysql> set global slow_query_log = 1;Query OK, 0 rows affected (1.80 sec)mysql> show variable...原创 2019-09-22 13:05:50 · 184 阅读 · 0 评论