1.NoSQL数据库简介
[toc]
技术发展技术的分类
解决功能性的问题:
Java、Jsp、RDBMS、Tomcat、HTML、Linux、JDBC、SVN
解决扩展性的问题:
Struts、Spring、SpringMVC、Hibernate、Mybatis
解决性能的问题:
NoSQL、Java线程、Hadoop、Nginx、MQ、ElasticSearch
Web 1.0时代Web1.0的时代,数据访问量很有限,用一夫当关的高性能的单点服务器可以解决大部分问题。
Web 2.0时代随着Web2.0的时代的到来,用户访问量大幅度提升,同时产生了大量的用户数据。加上后来的智能移动设备的普及,所有的互联网平台都面临了巨大的性能挑战。
解决CPU及内存压力
解决IO压力
NoSQL数据库概述NoSQL(NoSQL = Not Only SQL ),意即“不仅仅是SQL”,泛指非关系型的数据库。
NoSQL 不依赖业务逻辑方式存储,而以简单的key-value模式存储。因此大大的增加了数据库的扩展能力。
不遵循SQL标准。
不支持ACID。
远超于SQL的性能。
NoSQL适用场景
对数 ...
☆MySQL数据类型
[toc]
数据类型介绍
四种主要类别
数值类型
字符类型
时间类型
二进制类型
2.数据类型的 ABC 要素
Appropriate(适当)
Brief(简洁)
Complete(完整)
3.数值数据类型
3.1使用数值数据类型时的注意事项:
数据类型所表示的值的范围
列值所需的空间量
列精度和范围(浮点数和定点数)
3.2数值数据类型的类
整数:整数
浮点数:小数
定点数:精确值数值
BIT:位字段值
4.字符串数据类型
表示给定字符集中的一个字母数字字符序列
用于存储文本或二进制数据
几乎在每种编程语言中都有实现
支持字符集和整理
属于以下其中一类
文本:真实的非结构化字符串数据类型整数:结构化字符串类型
5.二进制字符串数据类型
5.1字节序列
二进制位按八位分组
存储二进制值
编译的计算机程序和应用程序
图像和声音文件
5.2字符二进制数据类型的类
二进制:固定长度和可变长度的二进制字符串
BLOB:二进制数据的可变长度非结构化集合
6.时间数据类型
列属性介绍
1.列属性的类别
数值:适用于数值数据类型(BIT 除 ...
9.MySQL的存储引擎
[toc]
存储引擎简介
文件系统
操作系统组织和存取数据的一种机制。
文件系统是一种软件。
文件系统类型
不管使用什么文件系统,数据内容不会变化
不同的是,存储空间、大小、速度。
Linux的文件系统
CentOS6文件系统:ext4
CentOS7文件系统:xfs
MySQL引擎
可以理解为,MySQL的“文件系统”,只不过功能更加强大。
MySQL的存储引擎
MySQL5.5版本之前:MyIsam
MySQL5.5版本之后:Innodb
区别:myisam 表级锁,innodb行级锁
MySQL自带的存储引擎类型MySQL 提供以下存储引擎
InnoDB
MyISAM
MEMORY
ARCHIVE
FEDERATED
EXAMPLE
BLACKHOLE
MERGE
NDBCLUSTER
CSV
还可以使用第三方存储引擎
MySQL当中插件式的存储引擎类型
MySQL的两个分支
perconaDB
mariaDB
123456789101112131415161718# 查看当前MySQL支持的存储引擎类型show engines;InnoDBMRG ...
8.MySQL索引及执行计划
[toc]
索引的算法索引的算法类型
BTree索引(Innodb存储引擎)
Btree
B+tree(目前MySQL多为次算法)
B*tree
HASH索引
FULLTEXT索引
RTree索引
Btree算法
三路Btree
根节点
枝节点
叶子节点
只要使用Btree算法,则证明该字段被创建索引了
12345select * from tb where name='xxx';50 zhang3 74 fselect * from tb1 where id=30 # 精确查询,产生3次IOselect * from tb1 where id>15 and id<30 # 范围查询,产生9次IO
B+tree算法
12select * from tb1 where id=30 # 精确查询,产生3次IOselect * from tb1 where id>15 and id<30 # 同样的范围查询,产生5次IO
B+tree和Bt ...
7.MySQL连表查询示例
[toc]
建库12345# 需求库名:linux50 字符集:utf8 校验规则:utf8_general_ci# 创建数据库create database if not exists linux50 charset utf8 collate utf8_general_ci;
建表
建表一
123456789create table linux50.student(sno int(20) unsigned auto_increment comment '学号(主键)',sname varchar(5) not null comment '学生姓名',sage tinyint(3) unsigned not null comment '学生年龄',ssex enum('0','1') not null default '1' comment '学生性别(1是男,0是女)默认为男',sbirthday datetime null comment ...
6.MySQL客户端命令及SQL语句
[toc]
MySQL对比Linux处理文件12345678910111213141516171819# 显示后几行tailselect * from world.city order by id desc limit 10;# 显示前几行headselect * from world.city limit 10;# 排序sortorder by# 过滤列awkselect name,population from world.city limit 10;# 过滤字符greplike '%xxx%'
MySQL客户端命令及SQL语句MySQL客户端命令
mysql
123456789101112131415161718192021# 登陆命令-u:指定用户-p:指定密码-S:指定socket-h:指定主机域-e:免交互执行SQL语句-P:指定端口# 连接到数据库后(命令)status || \s # 查看数据库基本状态help || \h || ? # 查看客户端命令的帮助clear || \c # 终止当前 ...
5.MySQL的启停和多实例
[toc]
MySQL启动关闭流程CentOS6
CentOS7
启停命令123456789101112131415161718192021# 启动## CentOS6、7:/etc/init.d/mysqld startservice mysqld start## CentOS7:systemctl start mysqld/app/mysql/bin/mysqld --defaults-file=/etc/my.cnf --user=mysql# 停止## CentOS6、7:/etc/init.d/mysqld stopservice mysqld stop## CentOS7:systemctl stop mysqldmysqladmin -uroot -p123 shutdown## 不建议使用kill -9 PIDkillall mysqldpkill mysqld
可通过如下地址查看,生产高并发环境野蛮粗鲁杀死数据库进程导致故障企业案例:
625某电商网站数据库宕机故障解决实录(上)
625某电商网站数据库宕机故障解决实录(下)
MySQL实例初始化配置配置文件读取顺序 ...
4.MySQL的管理
[toc]
MySQL用户管理用户作用
登陆数据库
对库表的增删查改
MySQL用户定义123456789101112131415# 用户格式用户@'主机域'# 示例用户root@'10.0.0.%' 10.0.0.1-0.0.0.255root@'10.0.0.5%' 10.0.0.50-10.0.0.59 + 10.0.0.5root@'10.0.%.%'root@'10.%.%.%'root@'%'root@'10.0.0.0/255.255.255.0'## 错误写法root@'10.0.0.0/24'# 主机域作用开启白名单,设置允许连接的网段
用户增删改查12345678910111213141516171819202122232425262728293031323334353637383940414243444546# 增## 使用create创建不带密码的用户create user test_aaa@ ...
3.MySQL体系结构和中间件
[toc]
MySQL结构概述MySQL客户端与服务端模型MySQL是一个C/S结构的服务
MySQL客户端:
mysql
mysqladmin
mysqldump
第三方客户端:
SQLyog
Navicat
mysqld是mysql服务端的守护进程
MySQL客户端与服务端连接方式
TCP/IP
1mysql -uroot -p123 -h10.0.0.51
Socket
1mysql -uroot -p123 -S /tmp/mysql.sock
示例(mysql连接方式):
12345mysql -uroot -p123 # 连接方式为:socketmysql -uroot -p123 -h127.0.0.1 # 连接方式为:TCP/IPmysql -uroot -p123 -hlocalhost # 连接方式为:socketmysql -uroot -p123 -h127.0.0.1 -S /tmp/mysql.s ...
2.MySQL安装
[toc]
MySQL安装安装方式
yum
源码安装
二进制安装
版本选择MySQL官网下载入口链接MySQL5.6:GA 6-12个月,小版本是偶数版MySQL5.7:GA 6-12个月,小版本是偶数版,mysql5.7.20以上版本(新增MGR高可用功能)
环境准备
主机名
IP
安装方式
db01
10.0.0.51
yum
db02
10.0.0.52 5.6
源码
db03
10.0.0.53 5.6
二进制
db04
10.0.0.54 5.7
二进制
三种方式安装MySQLMySQLyum安装12345678910111213141516171819202122232425262728293031323334353637383940# 下载MySQL官方源rpm -ivh https://dev.mysql.com/get/mysql80-community-release-el7-7.noarch.rpm# 查看仓库中支持哪些MySQL安装包yum list|grep mysql# 修改yum仓库配置文件 // 关闭mysql80仓 ...