什么是数据库:
数据库就是一个储存计算机数据的仓库,按照一定的数据结构对数据进行组织和储存,并通过一些方法管理这些数据。
数据库的种类:
非关系型数据库:存储格式灵活,读写速度快,可以使用磁盘或随机存储器作为载体,高扩展性,但是不支持sql语句,无事务处理
关系型数据库:支持事务(原子性,一致性,隔离性,持久性)、使用表结构,可用复杂查询,但是读写性能差,固定表结构,数据存储不灵活
生产环境常用数据库
关系型数据库有 Oracle、Microsoft SQL Server、MySQL/MariaDB等。
非关系型数据库有 MongoDB Memcached Redis
sql语句
QL(Structured Query Language 即结构化查询语言)
SQL语言主要用于存取数据、查询数据、更新数据和管理关系数据库系统,SQL语言由IBM开发。
DDL语句 数据库定义语言:数据库、表、视图、索引、存储过程,例如CREATE DROP ALTER
DML语句 数据库操纵语言(对记录的操作): 插入数据INSERT、删除数据DELETE、更新数据UPDATE
DCL语句 数据库控制语言(和权限有关): 例如控制用户的访问权限GRANT、REVOKE
DQL语句 数据库查询语言:查询数据SELECT
增:create database d1;
create table d1.t1(id int primary key auto_increment,name char(5));
insert into d1.t1(name) values(‘chen’),(‘wei’);
insert into t3 set id=4,name=’chen’;
alter table 表名 add 字段 类型 first;
删:drop database d1;
drop table t1;
alter table t3 drop name; 删除字段
delete from t1 where id=6; 删除id=6的行记录
改:alter table 表名 change 旧字段 新字段 类型;
update 表名 set 修改的字段 where 给谁修改;
查:select 字段名称,字段名称2 from 表名 条件
mysql> select id,name,salary from t1 where salary>2000;
统计字段得到数量:
mysql> select count(id) from employee5;
mysql>select name,salary from t1 where order by salary;
#-默认从小到大排序 order by salary desc; #降序,从大到小
mysql>select name,salary from t1 order by salary limit 1,2;#从第1行开始,打印2行
多表查询
内连接:在做多张表查询时,这些表中应该存在着有关联的两个字段,组合成一条记录。内连接查询:只显示表中有匹配的数据只找出有相同部门的员工
外连接:在做多张表查询时,所需要的数据,除了满足关联条件的数据外,还有不满足关联条件的数据。此时需要使用外连接.外连接分为三种
左外连接:表A left [outer] join 表B on 关联条件,表A是主表,表B是从表。
右外连接:表A right [outer] join 表B on 关联条件,表B是主表,表A是从表。
全外连接:表A full [outer] join 表B on 关联条件,两张表的数据不管满不满足条件,都做显示。
从数据库的读的延迟问题了解吗?如何解决?
解决方法:
半同步复制—解决数据丢失的问题
并行复制—-解决从库复制延迟的问题
从节点过多
数据库主从不同步的原因
网络延迟:数据库主从同步是基于binlog日志的异步复制,而binlog日志是通过网络进行传输的,网络延迟大时,可能会造成主从不同步
主从数据库负载不一致:主从同步时,主数据库需要一个io线程,而从服务器需要一个 io线程和一个sql线程,当一台服务器负载过大时,会导致提供给线程的资源不足,主从同步就无法完成
mysql的优化
安全方面:修改默认端口号,禁止root用户远程登录,对用户降权,以普通用户运行mysql
性能方面:升级硬件,内存、磁盘、优化sql语句(开启慢查询)、设置索引
参数优化:连接数调大、缓存的参数优化
架构方面:读写分离,一主多从,高可用
mysql的数据备份有几种
逻辑备份:mysqldump,备份sql语句,速度慢,恢复也慢,需要一条一条执行sql语句。
物理备份:xtrabackup备份。
完全备份:备份当前的所有数据。
增量备份:备份到上一次备份的节点,数据占用磁盘空间小,但恢复过程较复杂。
差异备份:备份上一次完全备份到当前时间点的所有数据,占用磁盘空间比较大,恢复过程简单。
策略:周日做全备,周一到周六每天增量备份,结合计划任务定期处理7天前的备份数据(迁移到其他安全的地方)。
主从复制原理
首先,要实现主从复制,就必须打开主库master端的bin-log日志,主从复制就从库Slave通过I/O线程从主库Master端获取相应的二进制日志,然后再在自己Slave端完全顺序的执行日志中所记录SQL语句。
主从复制延迟大比较慢原因:
从库配置低于主库,导致复制延迟;
主库读写压力大,导致复制延迟
主从库之间网络延迟;
主库的从库太多,导致复制延迟;
慢SQL语句太多。