1、三种操作语句:
DDL(数据库定义语句):数据库、表、视图、索引、存储过程的相关操作语句,例如Create、Drop、Desc、Show等
DML(数据管理语句):插入数据Insert,删除数据Delete,更新数据Update,查询数据Select
DCL(数据库控制语句):如创建数据库用户,设置权限等
2、数据库性能
QPS:每秒钟处理的查询量。TPS:每秒钟处理的事务数量
数据库服务速度缓慢的可能原因:
大量的并发:数据库连接数被占满
查看最大连接数:mysql> show variables like ‘%max_connect%‘;
重新设置最大连接数:mysql> set global max_connections=200;
查看线程情况:mysql> show status like ‘%Threads%‘;
Threads_connected:数据库当前连接数,也可以使用show full processlist查询,展示信息更加详细
Threads_running:当前激活的连接数,可认为是并发数
CPU使用过高:资源耗尽并且出现宕机现象
影响数据库性能的四大因素的思考方向:
①sql查询速度(每条sql查询过程只能使用一个CPU)
②网卡流量(从服务器数量,缓存设置,select *类型的查询)
③服务器硬件
④磁盘IO(热数据过多,大于内存空间;数据备份过程)
⑤大表的存在(单表行数超过千万,表大小文件超过10G)
事务的四大特性:
原子性:事务为一个不可分割的最小单元,一个事务开始后要么执行成功,要么失败,不可能只执行一部分事务。
隔离性:事务对数据库中的数据修改,在事务未提交之前,其他事务是不可见的(四种隔离级别)。mysql> show variables like "%iso%";
未提交读(READ-UNCOMMITED):事务未提交,其他事务可见,会出现脏读现象
已提交读(READ-COMMITED):事务提交后,其他事务才能读,不会出现脏读现象
可重复读(REPEATABLE-READ):事务一在进行时,事务二对事务一要读取的数据进行修改并提交事务。事务一继续还是读取到修改前的数据。锁住事务需要的行
可串行化(SERIALLIZABLE):不会出现幻读现象,最高隔离级别,锁住事务需要的表。事务并发大时可能会导致锁超时等问题。
持久性:一旦事务提交成功,其做的修改会永久保存到数据库中,即使系统崩溃,已提交的数据也不会丢失,redo日志实现。
一致性:事务如果提交失败,各个表能够恢复到事务开始之前的数据状态。回滚机制靠undo日志完成