mysql

指令+数据,PHP:查找算法
排序,二分法,索引,B+树
搜索码
ODBC
线程池:用来限制线程个数
DBMS:databases management system

数据的组织结构
层次型
网状型
关系型

RDBMS:relational databases management system

RDBMS:
1、数据库创建,删除
2、创建表,删除表,修改表
3、索引的创建,删除
4、用户和权限
5、数据增、删、改
6、查询

DML:data manapulate lanague:数据操作语言
insert,replace,update,delete
DDL:data defination lanauage:数据定义语言
create,alter,drop
DCL:data control language:数据控制语言
grant,revoke

SELECT

RDBMS:
oracle,Sybase,infomix,DB2,SQL server,MySQL,egresql,postgresql,enterpriseDB

MySQL,SQL,MySQL AB
去IOE计划(IBM,Oracle,EMC)

Oracle,

IBM,
SUN-->MySQL

BEA:weblogic
PepoleSoft

OpenOffice

LibreOffice

MariaDB

MySQL --> Percona

反关系模型:NoSQL
MongoDB
Redis
HBase

DBMS:
数据管理独立性
有效地完成数据存取
数据完整性和安全性
数据集中管理
开发存储与故障恢复
减少应用程序开发时间

SQL:ANSI
sql86,sql89,sql92,sql99

DBMS基本组件:提供分析器来判断语法是否正确,计划执行器用来分析有多少种方法来执行这个语句,优化器来判断哪种方法最优,文件的存取方法,要先把数据存取到缓存器,最后使用磁盘空间管理器来决定此数据存在哪个空间里,以及故障恢复管理器,事物管理器,锁管理器

www.mysql.com

MySQL:
community Edtion,社区版
Enterprise Edtion,企业版

软件包格式:
软件包管理器特有的格式
rpm包,.exe格式
通用二进制格式
源程序

RHEL 5.8 (32bit)
mysql,mysql-server

MySQL的rpm包

LAMP:
MySQL
通用二进制

二进制程序
mysql
-u username
-p
-h mysql_server

-h 127.0.0.1
   Linux:socket
   windows:memory

mysql客户端:
交互式模式
批处理模式:执行mysql脚本

交互式模式中的命令类别:
客户端命令
服务器端命令
都必须使用语句结束符,默认为分号;

SQL接口:
Oracle,PL/SQL
SQL server,T-SQL

用户:username@host

mysqld

tcp/3306

RDBMS:
/var/lib/mysql/

安装
yum install mysql-server

初始化:就是建立mysql数据库

关系数据库对象:


索引
试图
约束
存储过程
存储函数
触发器
游标
用户
权限
事务

表:
行,列
表:实体
行:row
列:field,column

字段名称,数据类型,类型修饰(实现限制功能)

字段名称:

字符,char(n),varchar(n),binary(n),varbinary(n),text(n),blob(n),

数值
精确数值:
整型
tinyint
smallint
medinuint
int
bigint
修饰符:unsigned,无符号
not null
十进制:
decimal
近似数值
浮点型
Float
double

日期时间
data
time
datetime
stamp
布尔

DDL
create
alter
drop
DML
insert
update
delete
DCL
grant
revoke

创建数据库
create database db_name;
create database if not exists db_name;

  drop database db_name;

创建表
create table tb_name(col1,col2,...);
查看库中的表:show tables from db_name;
查看表的结构:desc tb_name;
删除表:drop table tb_name;
修改表:
alter table tb_name
modify
change
add
drop

DML:
insert into tb_name (col1,col2,...) values|value('string',num,...);
insert into tb_name (col1,col2,...) values|value('string',num,...),('string',num,...);
update tb_name set column=value where
delete from tb_name where condition;

选择:
select 字段 from tb_name where condition

*: 所有字段
where:没有条件表示显示所有行

创建用户:
create user 'username'@'host' identified by 'password'
drop user 'username'@'host'

jerry@localhost,jerry@172.16.100.1

host:
ip:
hostname:
network:
通配符
:匹配任意单个字符,172.16.0.
%:匹配任意长度字符

  jerry@'%' 

DCL:
grant pri1,pri2,...on db_name.tb_name to 'username'@'host' [identified by 'password']
revoke pri1,pri2,...on db_name.tb_name from 'username'@'host'

查看用户授权:show grants for 'username'@'host'

all privileges

选择(只对行操作):指定以某字段做为搜索码,做逻辑比较,选符合条件的行
where 指定选择条件
投影(只对列操作):

INT A=10

CHAR A=10

mysql -u root -p -h 172.16.100.1
ls /var/lib/mysql/

mysql>\h;
mysql>show databases;
mysql>create database testdb;
mysql>create database if not exists testdb;
mysql>drop database testdb;
mysql>use mydb;
mysql>create table students(name char(20) not null,age tintint unsigned,gender char(1) not null);
mysql>show tables;
mysql>desc students;
mysql>alter table students add course varchar(100);
mysql>alter table students change course Course varchar(100) after name;
mysql>alter table students drop course;
mysql>insert into studnets (name,gender) value ('linghuchong','m'),('xiaolongnv','f');
mysql>select from students;
mysql>insert into students values ('xiaoxiangzi','hamagong','57','m');
mysql>update students set course='pixiejianfa';
mysql>update students set course='hamagong' where name='xiaoxiangzi';
mysql>select name,course from students where gender='m';
mysql>delete from students where course='pixiejianfa';
mysql>create user 'jerry'@'%' identified by 'jerry';
mysql>show grants for 'jerry'@'%';
mysql>grant all privileges on mydb.
to 'jerry'@'%';

MySQL
SQL/MySQL
事务,隔离,并发控制,锁
用户和权限
监控:status
索引类型:查询:variables
备份和恢复
复制功能
集群

文件存储缺陷:数据冗余和不一致性,数据访问困难,数据孤立,完整性问题,原子性问题,并发访问异常,安全性问题

文件:
表示层:文件
逻辑层:文件系统:存储引擎
物理层:元数据,数据:数据块

dbms:层次模型,网状模型,关系模型
E-R:实体-关系模型

关系模型(结构化数据模型):
关系模型
实体-关系模型
对象关系模型:基于对象的数据模型
半结构化数据模型:xml(扩展标记语言)例如<name>jerry</name>

关系:关系代数运算
交集
并集
差集
全集
补集

SQL(structure query language):结构化查询语句

70年代
system R:SQL
ingres,oracle,Sybase
ANSI(美国国家标准委员会):ansi-sql

DML:数据操作语言
insert
delete
select
update
DDL:数据定义语言
create
drop
alter
DCL:数据控制语言
grant
revoke
访问权限

RDB对象:库,表,索引,视图,用户,存储过程,存储函数,触发器,事件调度器

约束:
域约束:数据类型约束
外键约束:引用完整性约束
主键约束:某字段能唯一标识此字段所属的实体,并且不允许为空,一张表只能有一个主键
唯一性约束:每一行的某字段都不允许出现相同值,可以为空,一张表中可以有多个
检查性约束:age:int

constraint

关系型数据库:
表示层:表
逻辑表:存储引擎
物理层:数据文件

数据存储和查询:
存储管理器:权限及完整性管理器,事物管理器,文件管理器,缓冲区管理器
查询管理器:DML解释器,DDL解释器,查询执行引擎

C/S:协议通信

单进程:
多线程:守护进程,应用线程

thread reuse(线程重用)

32bit:
2.7G
64bit:
smp:对称多处理器

MySQL --》mariadb--》percona

查询管理器--》存储管理器--》磁盘

关系运算:
投影:只输出指定属性
选择:只输出符合条件的行
自然连接:具有相同名字的属性上所有取值相同的行
笛卡尔积:(a+b)*(c+d)=ac+ad+bc+db
并:集合运算

SQL查询语句:
sequel-->SQL
SQL-86
SQL-92
SQL-99
SQL-03
SQL-08

SQL语言的组成部分:
DDL
DML
完整性定义语言:DDL的一部分功能
视图定义
事物控制
嵌入式SQL和动态SQL
授权:DCL

使用程序设计语言如何跟rdbms交互:
嵌入式SQL:与动态SQL类似,但其语言必须程序编译时安全确定下来
ODBC
动态SQL:程序设计语言使用函数(mysql_connect())或者方法与rdbms服务器建立连接,并进行交互:通过建立连接向SQL服务器发送查询语句,并将结果保存至变量中而后进行处理
JDBC

MySQL组成部分
连接管理器--》解析器+缓存器--》优化器--》储存引擎(MySQL插件式存储引擎)

用户连接请求--》连接管理器--》线程管理器--》用户模块--》命令分发模块+缓存模块+日志模块--》解析器--》优化器+表定义模块+表维护模块(repair)+状态报告模块+复制模块--》访问控制模块--》表管理器--》存储引擎

MySQL插件式存储引擎
5.5.8:myisam
5.5.8后:innodb

表管理器:负责创建、读取或修改表定义文件;维护表描述符高速缓存;管理表锁;
表结构定义文件

表修改模块:表创建,删除,重命名,移除,更新或插入之类的操作
表维护模块:检查,修改,备份,恢复,优化(碎片整理)及解析

行:定长,变长

文件中记录组织:
堆文件组织:一条记录可以放在文件中的任何地方
顺序文件组织:根据“搜索码”值顺序存放
散列文件组织:

表结构定义文件,表数据文件

表空间(table space)

数据字典(data dictionary):
关系的元数据:关系的名字,字段名字,字段的类型和长度,视图,约束,用户名字,授权,密码

缓冲区管理器:
缓存置换策略
被钉住的块
MySQL -->
MariaDB
Percona

MySQL安装:
专用软件包管理器
deb,rpm
rpm:RHEL(oracle Linux),centos,suse
通用二进制格式包
gcc:x86,x64

源代码:
    5.5,5.6
    cmake

MySQL用户密码修改:
1.mysqladmin -u username -h hostname password ‘new_pass’ -p
2.mysql>set password for "username"@"host" =password('new_pass')
3.mysql>update mysql.user set password=password('new_pass') where condition

MySQL安装:
源码安装MySQL
cmake

字符集:
汉字:字符集
GBK
GB2312
GB18030
UTF8

排序规则:

性能分析

安装MySQL

yum groupinstall "Development Libraries"

tar -zxvf cmake-2.8.8.tar.gz
tar -zxvf mysql-5.5.28.tar.gz
cd cmake-2.8.8
./configure
make
make install

groupadd -r mysql
useradd -r -g mysql -s /sbin/nologin mysql
chown -R mysql.mysql /mydata/data

cd mysql-5.5.28
cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/mydata/data -DSYSCONFDIR=/etc -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_ARCHIVE_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DWITH_READLINE=1 -DWITH_SSL=system -DWITH_ZLIB=system -DWITH_LIBWRAP=0 -DMYSQL_UNIX_ADDR=/tmp/mysql.sock
make
make install

mysql--》mysqld
unix
mysql --> mysql.sock --> mysqld
windows
mysql --> memory(pipe) --> mysqld

不在同一主机上,基于tcp/ip协议

mysql客户端工具:
mysql
mysqldump
mysqladmin
mysqlcheck
mysqlimport

[client]

-u username
-h host
-p
--protocol {tcp|socket|pipe|memory}
--port PORT

cd /usr/local/mysql
chown -R :mysql ./
scripts/mysql_install_db --user=mysql --datadir=/mydata/data
cp support-files/my-large.cnf /etc/my.cnf
cp support-files/mysql.server /etc/init.d/mysqld
service mysqld start

vim /etc/profile.d/mysql.sh
export PATH=$PATH:/usr/local/mysql/bin

mysql>show databases;
mysql>show engines;

vim /etc/my.cnf
[mysqld]
datadir=/mydata/data

mysql>drop user ''@localhost;
mysql>use mysql;
mysql>select User,Host,Password from user;
mysql>drop user ''@localhost.localdomain;
mysql>update user set Password=PASSWORD('redhat') where user='root';
mysql>flush privileges;

vim /root/.my.cnf
[client]
user = 'root'
password = 'redhat'
host = 'localhost'

mysql非客户端工具:
myisamchk
myisapack

myISAM:
每表三个文件:
.frm:表结构
.MYD:表数据
.MYI:表索引
innodb:
所有表共享一个表空间文件
建议:每表一个独立的表空间文件
.frm:表结构
.ibd:表空间(表数据和表索引)
mysql>show variables like '%innodb%';
vim /etc/my.cnf
[mysqld]
innodb_file_per_table = 1

mysql>create database mydb;
mysql>use mydb;
mysql>create table testdb(id int not null,name char(30));

MySQL插件式存储引擎:
5.5.8:myisam
5.5.8后:innodb

存储引擎,也被称为表类型:

mysql:myisam
myisam表:无事物,表锁
.frm:表结构定义文件
.myd:表数据
.myi:索引
innodb表:事物,行锁
.frm:表结构
.ibd:表空间(数据和索引)

mysql>show engines;
mysql>show table status like ‘[表名]’;

--protocol:
tcp,socket,pipe,memory
程序语言连接数据的方式:
动态SQL:通过函数或方法与数据库服务建立连接
嵌入式SQL:
JDBC,ODBC

客户端:mysql,mysqladmin,mysqldump,mysqlimport,mysqlcheck
服务器:mysqld,mysql_safe,mysqld_multi

my.cnf
/etc/my.cnf--》/etc/mysql/my.cnf--》$mysql_home/my.cnf--》--default-extra-file=/path/to/somefile --》~/.my.cnf
[mysqld]
[mysqld_safe]
[client]
host =
[mysql]

mysqld --help --verbose:查看各种指令帮助信息

datadir = /mydata/data
hostname.err:错误日志
1.此前服务未关闭
2.数据初始化失败
3.数据目录位置错误
4.数据目录权限问题mysql:myisam

DBA:
开发DBA:数据库设计,SQL语句,存储过程,存储函数,触发器
管理DBA:安装,升级,备份,恢复,用户管理,权限管理,监控,性能分析,基准测试

数据类型:
数值型:精确数值(int),近似数值(float,double,real)
字符型:定长(char(#),binary),变长(varchar(#),varbinary)
text,blob
enum(枚举),set(集合)
日期时间型:data,time,datatime,timestamp

域属性,修改符:

数据类型:
1.存入的值类型
2.占据的存储空间
3.定义还变长
4.如何比较及排序
5.是否能够索引

SQL
mysql>show character set;显示字符集
mysql>show collation;显示排序规则
mysql>show global variables like ‘%char%’;

mysql>select database();
mysql>select last_insert_id();

auto_increment:必须是×××,非空,无符号,主键或唯一键
mysql>create table test(id int unsigned auto_increment not null primary key,name char(20));

RRtype ENUM('A','PTR')

SQL模型:
abc,abcdefg
char(3)

MySQL服务器变量:
作用域:分为两类:
全局变量:mysql>show global variables like 'sql_mode';
会话变量mysql>show [session] variables like‘sql_mode’;
生效时间:分为两类:
可动态调整:可及时修改,能及时生效
可静态调整:写在配置文件中,通过参数传递给mysqld

动态调整参数的生效方式:
    全局:对当前会话无效,只对新建会话有效
    会话:及时生效,但只对当前会话生效

或者: br/>服务器变量:@@变量名
显示:select
设定:set global|session 变量名=‘values’
mysql>select @@global.sql_mode;
mysql>select @@session.sql_mode;
mysql>set global sql_mode='strict_all_tables';
mysql>set session sql_mode='strict_trans_tables';

SQL语句:
数据库

索引
视图
DML
数据库:
create database|schema [if not exists] db_name [character set=] [collate=]
alter {database|schema} db_name {character set charset_name|collate cllation_name
drop {database|schema} {if exists} db_name

    mysql>show character set;             mysql>create schema if not exists students character set 'gbk' collate 'gbk_chinese_ci';
    mysql> 

表:
1.直接定义一张空表;
2.从其他表中查询出数据,并以之创建新表
3.以其他表为模板创建一个空表

create table [if not exists] tb_name (col_name col_defination,constraint)

mysql>create table tb1(id int unsigned not null auto_increment primary key,name char(20) not null ,age tinyint nou null) engine=engine_name;

mysql>create table tb1(id int unsigned not null auto_increment ,name char(20) not null ,age tinyint nou null,primary key(id),unique key(name),index(age));

键也称作约束,可用作索引,属于特殊索引(有特殊限定):B+tree

mysql>create table courses(cid tinyint unsigned not null auto_increment primary key,couse varchar(50) not null) engine=myisam;

create>show indexes from tb_name;显示指定表上的索引

单字段:
primary key
unique key
单或多字段:
primary key(col,...)
unique key(col,...)
index(col,...)

mysql>show table status like 'courese'\G;

mysql>drop table courses;

mysql>insert into courses(course) values('hamagong'),('pixiejianfa'),('kuihuabaodian');

mysql>create table testcourses select * from courses where cid <=2;

mysql>desc testcourses;

mysql>create table test like courses;

修改表定义:
alter table:添加,删除,修改字段;添加,删除,修改索引,该表名,修改表属性

mysql>alter table test add unique key(course);
mysql>alter table test change course course varchar(50) not null;

mysql>alter table test add starttime date default ‘2013-04-12’;

mysql>alter table test rename to testcourse;

mysql>rename table testcourse to test;

mysql>create table student(sid int unsigend not null auto_increment primary key,name varchar(30),cid int not null)

mysql>insert into student(name,cid) values(‘yue buqun’,2),(‘zhang wuji’,1)

mysql>select name,couse from student,courses where student.cid=courses.cid;
mysql>insert into student(name,cid) values('chen jialuo',5);

mysql>alter table student add foreing key foreign_cid(cid) references course(cid);
mysql>create table course like courses;
mysql>alter table courses engine=innodb;
mysql>show tables status;
mysql>alter table student modify cid tinyint unsigned not null;
mysql>show indexes from student;
mysql>insert into student(name,cid) values('chen jialuo',5);

删除表:
innodb支持外键

create index创建索引
show indexes from tb_name 显示指定表上的索引
create index index_name on tb_name(col,...);

col_name[(length)] [asc|desc]
name

mysql>create index name_on_student on student(name) usinag btree;

mysql>drop index name_on_student on student;

mysql>create index name_on_student on student(name(5)desc) using btree;

mysql>show indexes from student;

DDL:

DML:
select
insert into
delete
update
select select-list from tb where qualification

查询语句类型:
简单查询
多表查询
子查询

select from tb_name;
select filed1,filed2 from tb_name;投影
select [distinct]
from tb_name where qualification;选择

mysql>select from students;
mysql>select
from students where age>=20;
mysql>select name,age from students where age >=20;
mysql>select name,age from students where gender='M';

mysql>select gender from students;
mysql>select distinct gender from students;

from子句:要查询的关系 表、多个表,其它select语句

where子句:布尔关系表达式,=,<,>,<=,>=
逻辑关系:and,or,not,between ... and ...
like ""
%:任意长度任意字符
_:任意单个字符
rlike "正则表达式"
in/not in
is null
is not null

mysql>select name,age from students where age+1>=20;
mysql>select name,age,gender from students where age>20 and gender='M';
mysql>select name,age,gender from students where age>20 and gender='M' or gender='M';
mysql>select name,age,gender from students where not age>20;
mysql>select name,age,gender from students where not age>20 and not gender='M';
mysql>select name,age,gender from students where not (age>20 or gender='M');
mysql>select name,age from students where age between 20 and 25;
mysql>select name from students where name like 'Y%';
mysql>select name from students where name like 'Y____';
mysql>select name from students where name like '%ing%';
mysql>select name from students where name rlike '^[MNY].*$';
mysql>select name from students where age=20 or age=18 or age=25;
mysql>select name from students where age in(18,20,25);
mysql>select name from students where CID is null;

order by filed_name {asc|desc}
mysql>select name from students where CID is not null order by name desc;

字段别名:as
mysql>select name as students_name from students;
mysql>select 2+1;
mysql>select 2+1 as sum;

limit子句:limit [offset(偏移量),count]

mysql>select name as student_name from students limit 2;
mysql>select name as student_name from students limit 2,3;

聚合:sum(),min(),max(),count()
mysql>select avg(age) from students;
mysql>select min(age) from students;
mysql>select max(age) from students;
mysql>select sum(age) from students;
mysql>select count(age) from students;

group by:分组
having qualification
mysql>select age,gender from students group by gender;
mysql>select avg(age) from students group by gender;
mysql>select count(CID1),CID1 from students group by CID1;

mysql>select count(cid1) as persons,cid from students group by cid1 having persons>=2;

多表查询:
连接:
交叉连接:笛卡尔乘积
自然连接:
外连接:左外连接... left join ... on ...,右外连接... right join ... on ...
自连接

mysql>select from students,course;
mysql>select
from students,course where students.cid1=course.cid;
mysql>select students.name,course.cname from students,course where students,cid1=course.cid;
mysql>select s.name,c.cname from students as s,course as c where s.cid1=c.cid;
mysql>select students.name,course.cname from students left join course on students.cid1=course.cid;
mysql>select students.name,course.cname from students right join course on students.cid1=course.cid;
mysql>select c.name as stu,s.name as teacher from students as s,students as c where c.tid=s.sid;

子查询:
where ...> (select from ...)比较操作中使用子查询:子查询只能返回单个值
in/not in(select
from ...):使用子查询
mysql>select name from students where age > (select avg(age) from students);
mysql>select name from students where age in (select age from tutors);
在from中使用子查询:
mysql>select name,age from (select name,age from students) as t where t.age >=20;

联合查询:
(select from ...)union(select from ...)
mysql>(select name,age from students) union (select tname,age from tutors);

1.挑选出course表中没有被students中cid2学习的课程名称
mysql>select cname from course where cid not in (select distinct cid2 from students where cid2 is not null);

2.挑选出没有教授任何课程的老师,每个老师以及所教授课程的对应关系在course表中
mysql>select tname from tutors where tid not in (select distinct tid from courses)

3.找出students表中cid1有两个或两个以上同学学习了的同一门课程的课程名称
mysql>select cname from course where cid in (select cid1 from students group by cid1 having count(cid1) >=2);

4.显示每一位老师及其所教授的课程,没有教授的课程的保持为null
mysql>select t.tname,c.cname from tutors as t left join course as c on t.tid=c.tid;

5.显示每位同学cid1课程的课程名及其讲授了相关课程的老师的名称
mysql>select name,cname,tname from students,course,tutors where students.cid1=course.cid and course.tid=tutors.tid;

视图:存储下来的select语句
基于基表的查询结果
view
create view
物化视图:select
mysql>create view sct as select name,cname,tname from students,course,tutors where students.cid1=course.cid and course.tid=tutors.tid;

mysql>show create view sct\G;

mysql -e 'select * from jiaowu.students'
mysql -e "insert into jiaowu.students(name,age,gender,cid1,cid2,tid,createtime) values('stu1',23,'F',4,1,6,'2013-04-26 17:56:00')"

广义查询:
DML:
delete
insert into
update

insert into tb_name(col1,col2,...)values(val1,val2,...)[,val1,val2,...),...]
字符型:单引号
数值型:不需要引号
日期时间型:
空值:null,‘ ’
mysql>insert into tutors set tname="tom",cender="F",age=30;
mysql>select from tutors;
mysql>select
from tutors order by tid desc limit 1;
mysql>select last_insert_id();
mysql>desc students;
mysql>desc tutors;
mysql>select name,gender,age from students where age > 20;
mysql>insert into tutors set tname='tom',gender='F',age=30;
mysql>insert into tutors (tname,gender,age) select name,gender,age from students where age > 20;

REPLACE INTO

DELETE:
delete from tb_name where condition;

truncate tb_name:清空表,并重置autoincrement数量
truncate students

UPDATE:
update tb_name set col1...,col2=... where

连接管理器:
接受请求
创建线程
认证用户
建立安全连接
mysql>select CURRENT_TIME()

并发控制:
Mbox:MDA
c/s:100
10分钟:
多版本并发控制:MVCC
锁:
读锁:共享锁
写锁:独占锁
lock tables tb_name lock_type{read|write}
unlock tables

锁粒度:从大到小,MySQL服务器仅支持表级锁,行锁需要由存储引擎完成:
表锁:
页锁:
行锁:
mysql>lock tables tutors read;

事务:
RDBMS:ACID(原子性,一致性,隔离性,持久性)

myisam:
innodb:
事务日志:
重做日志redo log
撤消日志undo log
日志组

隔离性:
隔离级别:
read uncommitted:读未提交,即不用commit就执行成功了,其他人立即可以看到改变的结果
read committed:读提交,即只有commit之后才算执行成功,其他人才能看到改变的结果
repatable read:可重读,即在全部事务commit之前(即双方的事务都要进行提交),其他人看到的结果是一样的。
seriablizable:可串行,即对方只有commit以后,其他人才能进行操作

mysql>show global like '%iso%';

服务器变量:
全局变量:修改后不影响当前会话,只对新建的会话有效
会话变量:仅对当前会话有效,而且是立即生效

永久有效:修改配置文件

修改:set{session|global} var_name=‘’
mysql>set tx_isolation='read-uuncommitted';

多事务同时执行:彼此之间互相不影响的方式进行并发
事物之间交互:通过数据集
事务:cpu,I/O
RDBMS,
ACID:
automicity:原子性,事务所引起的数据库操作,要么都完成,要么都不执行;
consistency:一致性,A(3000)--》B(2000)
isolation:隔离性,靠事务调度来实现
事务调度:事务之间影响最小
mvcc:多版本并发控制
durability:一旦事务成功完成,系统必须保证任何故障都不会引起事务表示出不一致性;
1.事务提交之前就已经写出数据至持久存储;
2.结合事务日志完成;事务日志是顺序IO,数据文件是随机IO

事务的状态:
活动的:active
部分提交的:最后一条语句执行后
失败的:
终止的:
提交的:

事务:并发执行
1.提高吞吐量和资源利用率
2.减少等待时间

事务调度:
可恢复调度:
无级联调度

隔离级别:
read uncommitted(不需要提交就能生效)
read committed(必须要提交才能生效)
repeatable read
serializable

并发控制依赖的技术手段:

时间戳
多版本和快照隔离
饿死
死锁

SQL,ODBC
start tansaction:启动事务
commit:提交
rollback:回滚

当commit之后代表此事务已经完结,进行下一个操作仍要重新启动事务

mysql>start transaction;
mysql>select * from tutors;
mysql>delete from tutors where tname like 'stu%';
mysql>rollback;
mysql>commit;
mysql>select @@autocommit;

如果没有明确启动事务:
autocommit:能实现自动提交,每一个操作都直接提交;

建议:明确使用事务,并且关闭自动提交
mysql>set autocommit=0;

保存点:savepoint
回滚至保存点:rollback to sid
mysql>savepoint ab;
mysql>rollback to ab;
mysql>select @@tx_isolation;
mysql>set tx_isolation='read-uncommitted';
mysql>start transaction;
mysql>update tutors set age=50 where tid=12;
mysql>set tx_isolation='read-committed';
mysql>commit;
mysql>start transaction
mysql>set tx_isolation='repeatable-read';
mysql>set tx_isolation='serializable';

MySQL:br/>用户
密码:password()
用户名@主机
账号:认证
权限:授权
user:用户账号、全局权限
db:库级别权限
host:废弃
tables_priv:表级别权限
columns_priv:列级别权限
procs_priv:存储过程和存储函数相关的权限
proxies_priv:代理用户权限

用户账号:br/>用户@主机
用户名:16字符以内
主机:
主机名:www.magedu.com
IP:192.168.1.25
网络地址:192.168.1.0/255.255.255.0
通配符:%,_:172.16.%.%,%.magedu.com

--skip-name-resolve

权限级别:
全局级别:super,
库级别:
表级别:delete,alter,trigger
列级别:select,insert,update
存储过程和存储函数

临时表:内存表
heap:16MB

触发器:主动数据库
insert,delete,update

create user username@host [identified by 'password']
mysql>create user catiuser@'%' indetified by 'cactiuser';

grant:授权

insert into mysql.user
show grant for
grant all privileges on [object_type].* to username@'%';

object_type:
table
function
procedure

grant execute on function db.abc to usrname@'%';

show grants for 'username@host';

grant option:
max_qureies_per_hour count
max_update_per_hour count
max_user_connections count

mysql>grant create on cactidb. to cactiuser@'%';
mysql>grant insert on cactidb.
to cactiuser@'%';
mysql>grant select on cactidb. to cactiuser@'%';
mysql>grant alter on cactidb.
to cactiuser@'%';
mysql>grant update(age) on cactidb.testtb to cactiuser@'%';
mysql>grant super on . to cactiuser@'%'
mysql>set global tx_isolation='read-uncommitied';

insert into mysql.user
mysql>flush privileges;

drop user username@'%'

rename user old_name to new_name

revoke:回收权限
mysql>revoke select on cactidb.* from cactiuser@'%';

启动mysqld_safe时传递两个参数:
--skip-grant-tables
--skip-networking
通过更新授权表方式直接修改其密码,而后移除此两个选项重启服务器
service mysqld stop
mysqld_safe --skip-grant-tables --skip-networking &
mysql>select User,Host,Password from user;
mysql>update user set password=password('123456') where user='root';

错误日志:long_error,log_warning

一般查询日志:general_log,general_log_file,log,log_output

慢查询日志:long_qurey_time,log_slow_queries={yes|no},slow_query_log,slow_query_log_file
log_output{table|file|none}
mysql>set global slow_query_log=1;

二进制日志:任何引起或可能引起数据库变化的操作:复制、即时点恢复,mysqlbinlog,

二进制日志的格式:
基于语句:statement
基于行:row
混合方式:mixed
二进制日志事件:
产生的时间
相对位置
二进制日志文件:
索引文件
二进制日志文件

查看当前正在使用的二进制日志文件:
mysql>show master status;
mysql>show binary logs;
mysql>insert into tutors(tname.gender,age) values('stu100','M',30);
mysql>show binlog events in 'mysql-bin.000001' [from position];

mysqlbinlog:
--start-datetime
--stop-datetime

--start-position
--stop-position

mysqlbinlog mysql-bin.000001
mysqlbinlog --start-position=107 --stop-position=358 mysql-bin.000001
mysqlbinlog --start-datetime='2013-04-29 15:14:39' mysql-bin.000001 > /root/a.sql

mysql>flush logs;实现日志滚动
mysql>purge binary logs to 'mysql-bin.000003';删除指定日志文件之前的日志文件

中继日志:在从服务器上,从主服务器的二进制日志文件中复制而来的事件,并保存为的日志文件

事务日志:ACID,将随机IO转换为顺序IO;事务性存储引擎用于保证原子性,一致性,隔离性和持久性
innodb_flush_log_at_trx_commit:
0:每秒钟同步一次,告诉内核别在内存中缓存,直接同步到磁盘中去
1:每事务同步,并执行磁盘flush操作
2:每事务同步,但不执行磁盘flush操作

myisam:不支持事务,表锁,不支持外键,支持B树索引,fulltext索引,空间索引,支持表压缩
innodb:支持事务,行级锁,B树索引,聚簇索引,自适应hash索引,表空间,raw磁盘设备
mrg_myisam

表类型

mysql>show global variables like ‘%log%’;
mysql>show global variables like '%long%';
mysql>set slow_query_log=on;
mysql>show engines;
IOPS:

转载于:https://blog.51cto.com/12406012/2368214

1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
应用背景为变电站电力巡检,基于YOLO v4算法模型对常见电力巡检目标进行检测,并充分利用Ascend310提供的DVPP等硬件支持能力来完成流媒体的传输、处理等任务,并对系统性能做出一定的优化。.zip深度学习是机器学习的一个子领域,它基于人工神经网络的研究,特别是利用多层次的神经网络来进行学习和模式识别。深度学习模型能够学习数据的高层次特征,这些特征对于图像和语音识别、自然语言处理、医学图像分析等应用至关重要。以下是深度学习的一些关键概念和组成部分: 1. **神经网络(Neural Networks)**:深度学习的基础是人工神经网络,它是由多个层组成的网络结构,包括输入层、隐藏层和输出层。每个层由多个神经元组成,神经元之间通过权重连接。 2. **前馈神经网络(Feedforward Neural Networks)**:这是最常见的神经网络类型,信息从输入层流向隐藏层,最终到达输出层。 3. **卷积神经网络(Convolutional Neural Networks, CNNs)**:这种网络特别适合处理具有网格结构的数据,如图像。它们使用卷积层来提取图像的特征。 4. **循环神经网络(Recurrent Neural Networks, RNNs)**:这种网络能够处理序列数据,如时间序列或自然语言,因为它们具有记忆功能,能够捕捉数据中的时间依赖性。 5. **长短期记忆网络(Long Short-Term Memory, LSTM)**:LSTM 是一种特殊的 RNN,它能够学习长期依赖关系,非常适合复杂的序列预测任务。 6. **生成对抗网络(Generative Adversarial Networks, GANs)**:由两个网络组成,一个生成器和一个判别器,它们相互竞争,生成器生成数据,判别器评估数据的真实性。 7. **深度学习框架**:如 TensorFlow、Keras、PyTorch 等,这些框架提供了构建、训练和部署深度学习模型的工具和库。 8. **激活函数(Activation Functions)**:如 ReLU、Sigmoid、Tanh 等,它们在神经网络中用于添加非线性,使得网络能够学习复杂的函数。 9. **损失函数(Loss Functions)**:用于评估模型的预测与真实值之间的差异,常见的损失函数包括均方误差(MSE)、交叉熵(Cross-Entropy)等。 10. **优化算法(Optimization Algorithms)**:如梯度下降(Gradient Descent)、随机梯度下降(SGD)、Adam 等,用于更新网络权重,以最小化损失函数。 11. **正则化(Regularization)**:技术如 Dropout、L1/L2 正则化等,用于防止模型过拟合。 12. **迁移学习(Transfer Learning)**:利用在一个任务上训练好的模型来提高另一个相关任务的性能。 深度学习在许多领域都取得了显著的成就,但它也面临着一些挑战,如对大量数据的依赖、模型的解释性差、计算资源消耗大等。研究人员正在不断探索新的方法来解决这些问题。
深度学习是机器学习的一个子领域,它基于人工神经网络的研究,特别是利用多层次的神经网络来进行学习和模式识别。深度学习模型能够学习数据的高层次特征,这些特征对于图像和语音识别、自然语言处理、医学图像分析等应用至关重要。以下是深度学习的一些关键概念和组成部分: 1. **神经网络(Neural Networks)**:深度学习的基础是人工神经网络,它是由多个层组成的网络结构,包括输入层、隐藏层和输出层。每个层由多个神经元组成,神经元之间通过权重连接。 2. **前馈神经网络(Feedforward Neural Networks)**:这是最常见的神经网络类型,信息从输入层流向隐藏层,最终到达输出层。 3. **卷积神经网络(Convolutional Neural Networks, CNNs)**:这种网络特别适合处理具有网格结构的数据,如图像。它们使用卷积层来提取图像的特征。 4. **循环神经网络(Recurrent Neural Networks, RNNs)**:这种网络能够处理序列数据,如时间序列或自然语言,因为它们具有记忆功能,能够捕捉数据中的时间依赖性。 5. **长短期记忆网络(Long Short-Term Memory, LSTM)**:LSTM 是一种特殊的 RNN,它能够学习长期依赖关系,非常适合复杂的序列预测任务。 6. **生成对抗网络(Generative Adversarial Networks, GANs)**:由两个网络组成,一个生成器和一个判别器,它们相互竞争,生成器生成数据,判别器评估数据的真实性。 7. **深度学习框架**:如 TensorFlow、Keras、PyTorch 等,这些框架提供了构建、训练和部署深度学习模型的工具和库。 8. **激活函数(Activation Functions)**:如 ReLU、Sigmoid、Tanh 等,它们在神经网络中用于添加非线性,使得网络能够学习复杂的函数。 9. **损失函数(Loss Functions)**:用于评估模型的预测与真实值之间的差异,常见的损失函数包括均方误差(MSE)、交叉熵(Cross-Entropy)等。 10. **优化算法(Optimization Algorithms)**:如梯度下降(Gradient Descent)、随机梯度下降(SGD)、Adam 等,用于更新网络权重,以最小化损失函数。 11. **正则化(Regularization)**:技术如 Dropout、L1/L2 正则化等,用于防止模型过拟合。 12. **迁移学习(Transfer Learning)**:利用在一个任务上训练好的模型来提高另一个相关任务的性能。 深度学习在许多领域都取得了显著的成就,但它也面临着一些挑战,如对大量数据的依赖、模型的解释性差、计算资源消耗大等。研究人员正在不断探索新的方法来解决这些问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值