标签:mysql
1、IO模型理论基础详解:
http或https都是基于tcp协议完成通讯。在tcp中使用socket通讯模型,在domain中界定socket是如何定义。
domain有三种工作类型:
unix domain:每个socket地址是个文件路径
ipv4 domain:每个socket是ipv4:port
ipv6 domain:每个socket是ipv6:port
函数和过程:有返回值为函数。无返回值的称为过程。
I/O:进程调用请求发起之后是否会被挂起
阻塞:进程发起I/O调用,recvfrom未完成之前,进程会被挂起,在数据未完成前该进程不能做任何工作;
非阻塞:进程发起I/O调用,被调用函数完成不会阻塞当前进程,而是立即返回;
同步:进程发起一个过程或函数调用后,在没有得到结果之前,该调用将不会返回;
异步:进程发起一个过程或函数调用后,即使被调用者不能立即结果准备好,但也会返回结果(未完成),内核通知调用者结果什么时候会OK;
5种I/O模型:
同步阻塞:进程发起I/O调用由用户模式转为内核模式,进程进入不可中断睡眠,内核准备数据,数据准备完成后把数据从内核内存复制到进程内存中,复制完成后唤醒进程,
同步非阻塞:进程发起I/O调用并处于忙等待状态,进程频繁和内核交互查询数据准备情况,内核数据准备好后,进程由非阻塞(忙等待过程中)转为阻塞状态等待内核复制数据到进程内存中才能继续工作
I/O复用:prefork工作于复用I/O模型,当I/O请求发给进程后,进程使用select调用子进程接收请求并阻塞请求I/O准备数据,数据准备完成后通知进程,并用recvform进行数据复制,进程用(select | poll)同时监控多个I/O,实现一个进程可以同时处理多个I/O, 信号驱动I/O:event 工作于信号驱动I/O,进程发起SIGIO(sigaction)调用,进程处于非阻塞状态,数据准备完成后会通知进程,并返回给请求I/O,请求I/O发起recvform进行数据复制
异步I/O:nginx支持异步I/O,I/O请求发给进程,进程使用aio传给内核,内核完成数据准备和数据复制后通知进程。该进程一直处于非阻塞模型,文件请求可以异步,网络I/O无法异步
sendfile和sendfile64:可以在内核中直接构建发送报文通过tcp响应客户端请求,实现静态文件直接内核响应
mmap():磁盘数据映射到内核内存中,在映射到进程内存中加快客户端请求响应
2、数据库基础理论
动态资源:读入数据,对数据加工,输出结果(html标记)
数据模型:层次模型、网状模型、关系模型
约束:主键、外键、组合主键
DBMS(database managemenet system)优点:
数据独立性
高效数据存取
数据完整性和安全性
数据管理
并发存储和故障恢复
开发周期缩短
3、MySQL理论基础及LAMP平台
关系型数据库:oracle、db2、sqlserver、mysql-->mariadb、postgresql
关系数据库的组件:
库:表的集合,每个表都有一个惟一名字;
表(关系):行(row, record, tuple)和列(field, column, attribute)
约束:候选键(码)、主键(primary key)、惟一键(unique key)、外键(foreign key):引用性约束
关系型查询语言:SQL
关系运算:
选择:挑选出符合指定条件行
投影:挑选出关心的列
连接运算:
笛卡尔积:从两个输入关系中输出所有的元组对(无论它们在共同的属性上取值是否相同),因此,也被称为交叉连接;
自然连接: 从两个输入关系中输出这样的元组对:它们在相同的名字的所有属性上取值相同;
SQL语言有如下几个部分组成:
数据定义语言:DDL(CREATE, DROP, ALTER, GRANT, REVOKE)
数据操纵语言:DML(INSERT, DELETE, UPDATE, SELECT)
事务控制:创建事务和结束事务
SQL的数据定义:
创建关系,即创建表:
每个关系模式;
每个属性的取值类型;
完整性约束;
索引的集合;
表的安全性和权限信息;
表的物理存储结构;
MyISAM: .frm, .MYD(数据), .MYI(索引)
InnoDB: .frm, .ibd(数据+索引)
SQL数据的类型:
字符型:
固定长度的字符型:char
可变长度的字符型: varchar
数值型:
整型:精确数值型(int)
浮点型: 近似数值型(float、double)
LAMP: Linux + apache(httpd) + php (php-myql)+ mysql
mysql: 3306/tcp
httpd + php:
php作为httpd的模块
当php以模块化使用时,只需重新启动httpd
/etc/httpd/conf.d/php.conf:主配置文件
/usr/lib64/httpd/modules/libphp5.so:模块位置
httpd基于cgi协议与php通信
php工作为一个服务器:httpd以fastcgi协议与php服务器进程进行通信
php的安装:
rpm包、编译安装
开源php站点程序:
wordpress
drupal, joomlar
phpwind(阿里)
discuz(腾讯)
phpbb
phpMyAdmin: php, 管理 mysql程序
php测试代码:
<html>
<h1> this page </h1>
<?php
phpinfo(); 测试php是否正常工作
?>
<?php
$link = mysql_connect(‘127.0.0.1‘,‘root‘,‘123456‘);测试php连接mysql是否成功
if ($link)
echo "ok";
else
echo "no";
mysql_close();
?>
</html>
4、LAMP平台理论基础及部署
MySQL安装:
1、rpm包安装 项目方提供、OS vendor
2、通用二进制格式 展开、配置后即可使用
3、源码编译安装 cmake编译器
CentOS 6-mysql-server:
服务脚本:/etc/rc.d/init.d/mysqld
主服务程序:/usr/bin/mysqld_safe
数据文件:/var/lib/mysql
配置文件:/etc/my.cnf
客户端程序:/usr/bin/mysql
unix sock: /var/lib/mysql/mysql.sock
mysqld第一次启动之前需要先初始化:创建mysqld服务自身运行依赖元数据数据库:mysql
CentOS 7
systemctl start mariadb.service
mysql客户端程序的基本使用:
-u USERNAME: 默认为root
-h HOST: 默认为localhost
-p [PASSWORD]: 输入密码
mysql的用户账号:USERNAME@HOST
USERNAME: 用户名
HOST: 此用户仅允许通过此处指定的主机登录mysqld服务;
root@localhost, root@‘127.0.0.1‘, root@‘HOSTNAME‘
交互式命令:
客户端命令:无需分号结尾;
服务器端命令:必需分号结尾;
mysql注意事项:
mysql命令和字段名不区分大小写,表名在linux中会区分大小写
mysql常用命令:
show databases;显示所有的数据库名称
select version(); 显示数据库版本
select user();显示用户
use mysql;指定使用哪个数据库
show tables;显示当前库中的表
desc user;显示表结构
select user,host,password from user;查看用户登录限制
show table status\G;显示表的详细信息
show character set;显示数据库支持的字符集
show collation;查看字符排序规则
show global variables;显示服务器工作属性所有环境变量,show global variables like ‘wait_timeout‘;查看单个
show global status;显示所有执行命令统计数据;show global status like ‘com_select‘;显示单个
马哥教育第二十二天IO模型理论、数据库基础理论、LAMP平台理论基础及mysql部署
标签:mysql
原文地址:http://5990383.blog.51cto.com/5980383/1653708