sql国际上用来管理数据库的标准语言
oracle首先用于商业
sql结构化查询语言只关注,我要得到的数据是什么,而不关心数据是怎么在磁盘上存放的,这一点大大减少了,数据库使用用户的难度
走网络,就是tcp/ip协议,就需要用到增加的独立端口号
ip加地址组合成了一个套接字,套接字里里面就用到了每个数据库用到的各自独立的端口号,mysql tcp的3306端口。
sqlserver1433 oracle1521,是标准端口,生产中可以根据企业的需求修改
客户端安装后,可以直接去操作数据库了,有字符界面,有图形界面
mysql主流是命令行
普通用户一般用应用程序方案,安装客户端也不会使用
就需要程序链接数据库,就需要开发接口
JDBC,java开发,ODBC微软,各种语言区编程序都需要按照编程接口
按开发接口去编写程序就可以 了
主键作用的字段必须有值,不能为空null
唯一键可以为空索引很关键,等于把数据库的数据建立一个目录,类似于书的目录,如果没有目录,需要从头开始翻,全表扫描
如果有目录就快很多
所以也是一个数据,只不过记录的是一个特定记录的数据,把它放在专门的空间中,按照一定次序排序,显而易见说的目录是按照章节的次序排序
利用书的目录可以提高速度,但是也有代价,表的索引也是占空间的,但是下载往往追求性能,因为现在硬盘便宜了,既然方便查询,那么会不会对表产生修改
如果你的数据库读的多,写的少,那么索引对于性能还是提升不少,(但是有些数据库就是读的少,写的多)
如果平凡的改,索引加不加就需要考虑了,因为会带来额外的一些负担选择是挑选行
投影就是选择列(100列中选择显示几列)
连接,表和表之间的关联,外链
RDBMS是关系型数据库在磁盘上保存数据,每个格式都不一样,mysql就和oracle都不一样,即使是mysql,不同的存储引擎存储在磁盘上的文件也不同,即使是同一种存储引擎,存放在磁盘上的也有可能不一样,比如拆开成多个文件和一个文件,这和你的配置有关,这就叫物理层
物理层对于运维来讲,需要关心,我们关心这些数据放在了哪里,比如我们要把不同类型的文件在磁盘上分门别类,而且需要考虑到哪些文件负载比较大,性能要求高,就可以把这个文件放在一个告诉硬盘上,来提高性能
数据库和数据库日志是分开放的,系统默认往往是放一块的
逻辑层,数据在存储的时候,是存储哪些类型的数据,和数据存在的关联。逻辑性的数据存储,主键外键之类的
用户看到的,是别人希望你看到的,比希望你看到的就看不到,比如买东西的买家,进货价格
XML扩展的标记语言,有些数据就是存放再xml里的,比如yum仓库的元数据
tomcat中间件配置文件格式就是xml
disable_userlist是否显示当前用户登录的列表
现在有两个用户
开启图形
默认显示用户名列表
为真就不显示了
这样用户名就不显示了
JSONE数据格式,也是很多人用来存放配置的一种格式,用起来更方便
阿里提出了去IOE,ibm,oracle,emc存储,商业公司的产品好是好就是太贵了
阿里的公司都不用oracle,学学mysql更有前途
2000几年,mysql还没开始流行起来,很多人公司就用sqlserver,java
大众点评是.net开发,也是后面迁移到的Linux
oracle被mysql收购以后,升级更新不是那么勤快了jumperserver就是一个python开发,后来慢慢发展,是从小米跳槽的一个人,开发的
所以centos7为什么默认现在就是用mariadb(marira是monty小女儿名字)而不是MySQL了企业版,需要花钱的
普通社区版本,GPL约定开源的,公共许可证
centos6自带5.1.73
在配置mysql和mariadb的时候,需要看官方文档
kb知识库,en英文版
percona也研究了很多功能,mysql分支插件是存储引擎,可以根据情况,来调换存储引擎,模块化的
apache软件默认工作preforks,1个master进程带多个子进程,每个子进程响应用户请求
nginx,1个master进程带多个子进程,每个子进程可以同时响应多个用户的请求,epoll工作模型
mysql,一个进程开若干线程,每个线程响应用户请求mariadb的安装方法,有三种
1,源码编译安装
源码编译也有两种方式。
传统的./configrue makeinstall
还有semet
2.rpm和yum
3,二进制的格式安装,(无非就是源码编译好打包在一个目录里,我们只要解包到一个文件里,配置文件配好就可以使用
先来看比较简单的,rpm包安装
配置文件
对应的服务
根据环境大小来配置
但是他所谓的大并不是真正多大,这个配置只是参考模版
日志
半同步插件
mysql主程序用mysql来运行,
端口号0-1023只能以root身份来运行,3306用mysql即可
启动之后数据库文件就已经生成了
sock文件就是用于同一台电脑不同进程之间通讯,就不需要经过网络,直接在本地sock文件转发数据
mysql工作原理是基于单进程,多线程的原理的
pstree -p
yum安装前先把用户创建了
可以用mysql链接,交互式小工具
这些命令都是客户端命令,mysql这个小程序的命令,不是服务器本身的命令(sql)
clear清楚当前输入指令
status当前状态
当前是以root身份来访问,跟linux的用户不相干
test是学习测试,其他都是系统数据库,information_schema是虚拟数据库,在内存中,不在磁盘上
数据库表现为一个文件夹
这些文件对应表,这样一个表对应三个文件(跟存储引擎有关,存储引擎也叫表类型,不同存储引擎在磁盘保存数据方式不同)
在performance_schema存的只有1个,存储引擎不同
字符集,拉丁支持欧美字母,但是不支持中文,应该用utf-8
unicode是支持全球所有语言的,只是标准,不规定具体保存在磁盘上的时候占多少字节
和utf-8,是实际使用的
可以查看所有的字符集
utf8mb4,比utf-8兼容性更好,支持表情包
对应的排序规则,用默认的即可
当前有一个线程,socket文件路径
一个线程响应一个用户,两个用户就是两个线程
use指定当前数据库