MYAQL:

事务:事务是并发控制的基本单元,事务是一个操作序列,要么都执行,要么都不执行,
他是一个不可分割的工作单位,事务是维护数据库一致性的单位。

四个ACID基本性质:

1.原子性:要么都执行,要么都不执行。
2.一致性:合法的数据才可以被写入。
3.隔离性:允许多个用户并发访问。
4.持久性:事务结束后,事务处理的结果必须得到固化。即一旦提交,对数据库改变是永久的。

事物的语句:

开始事务:BEGIN TRANSACTION
提交事务:COMMIT TRANSACTION
回滚事务:ROLLBACK TRANSACTION

慢查询:

开启慢查询,可以让mysql记录下查询超过指定时间的语句,通过定位分析性能的瓶颈,才能更好地优化数据库系统的性能。
slow_query_log 慢查询开启状态
slow_query_log_file 慢查询日志的存放位置
long_query_time查询超过多少秒才记录

可以通过设置全局变量的方法设定:
例如:set gloable slow_query_long on   开启慢查询状态
service mysqld restart 即可

查询对应值:
slow variables like'slow_query%';
show variables like 'long_query_time';

测试慢查询是否正确开启:
select sleep(2);   执行慢查询语句,查看是否有对应的慢查询日志生成。

常见的sql语句:(sql语句中大小写均可执行,规范是大写)

说明:创建数据库
create database westos;
说明:删除数据库
drop database westos;
说明:查询user表中的Host,User,Password信息
select host,user,password from user;
说明:查询user表的数据结构
desc user;
说明:新建数据库westos中的表格
use westos;
create table linux(
username varchar(50) not null,
password varchar(50) noe null
);
说明:在linux表格中插入信息
insert into linux values('xyy','123');
说明:修改linux表格中的信息
update linux set password '456' where username='xyy';
说明:在linux表格中添加age字段
alter table linux add age varchar(4) after username;
说明:在linux表格中移除age字段
alter table linux drop age;
说明:修改表格名字
alter table linux rename haha;
说明:删除表格中的某一行
delete from haha where username='xyy';
说明:删除表格
drop table haha;

数据库的锁机制:

    数据库的大并发要考虑锁和锁的性能问题,加锁是为了实现并发控制。数据库是一个多用户资源,
    若对并发控制不加控制会读取和存储不正确的数据,破坏数据的一致性(脏读,不可重复读,幻读等)可能会产生死锁。
    锁机制保证在一个事务释放锁之前其他事务不可以进行修改。
    锁:行级锁,表级锁,悲观锁,乐观锁
    悲观锁:事务每次操作之前假设有其他事务会修改需访问的数据,会要求上锁。
    乐观锁:事务每次操作之前假设没有其他事务会修改需访问的数据,不会要求上锁。
    共享锁:对某一资源加共享锁,自身可以读该资源,其他人也可以读该资源
    共享锁(S锁):如果事务T对数据A加上共享锁后,则其他事务只能对A再加共享锁,不能加排他锁。获准共享锁的
    事务只能读数据,不能修改数据。
    排他锁(X锁):如果事务T对数据A加上排他锁后,则其他事务不能再对A加任任何类型的封锁。获准排他锁的事务
    既能读数据,又能修改数据。
    共享锁下其它用户可以并发读取,查询数据。但不能修改,增加,删除数据。资源共享。

mysql两种引擎的区别:

Innodb引擎:提供了对数据库ACID事务的支持,并且实现了sql标准的四种隔离级别,事务安全的,支持行级锁,不支持全文索引。
MyIASM引擎:mysql的默认引擎,没有提供对数据库事务的支持,非事务安全的,锁的粒度是表级的,支持全文索引类型,相对简单性能优。
总结:
MYIASM管理非事务表,提供高速存储和检索,以及全文搜索能力,如果在应用中执行大量的select操作,应选择MYIASM引擎
Innodb用于事务处理,具有ACID事务支持等特性,如果在应用中执行大量的insert和update操作,应选择innodb引擎。

四种隔离级别:

未提交读:读数据时不会检查使用任何锁。
已提交读:只读取提交的数据并等待其他事务释放锁。
可重复读:会保持共享锁到事务结束。
可序列化:不仅会锁定影响的数据,还会锁定这个范围

mysql的四种日志:

1.错误日志:Error Log.记录mysql运行过程ERROR,WARING等信息,系统出错或某条记录出问题可查看ERROR日志。
2.日常运行日志:General query log记录mysql中每条请求数据。
3.二进制日志:Binary log,包含一些事件,数据库的改动等。
4.慢查询日志:slow query log,用于mysql的性能调优。

mysql优化:

1.定期分析检查表:
analyze table tbl_name;
check table tbl_name;
2.定期优化表:
optimize table tbl_name;
10-06 12:43