MariaDB关系型数据库管理类型:RDBMS,大部分为C/S架构。关系模型:表和关系不能等同。表(行,列组成的二维关系)范式:第一范式,第二,第三范式关系运算:选择和投影,选择就是从一个表中挑选出符合的行,投影挑选出所期望的列核心基本概念:数据库是由众多表组成,糅合众多表后称为数据库,而围绕表有很多组件,比如索引,索引是按照特定的数据结构组织起来的表中某个或些字段数据,所以一个表中可以有很多索引,索引就是将表中某些特定的段抽取出来,一般而言有特定的规律,比如b+树索引主要目的是为了加强数据查询操作的视图,也就是虚表。SQL:Structure Query LanguageDDL:数据定义语言,DML:数据操纵语言(操纵表中数据)。
编程接口:内部定义代码块。内建函数。用户也可以自定义函数;存储过程:没有返回值的函数存储函数:又返回结果的代码片段
如果一段代码对数据做了处理以后,没有做任何返回,仅仅是做数据加工,通常称为一个过程。如果对数据加工后有返回值,能调用,能返回的话,这种通常称为函数,有输入有输出。
编程接口还可以定义触发器:特殊事件发生时,满足条件后触发。事件调度器:定期执行内建任务,从而完成周期操作等过程式编程:支持选择,循环等等
三层模型:物理层:表现在文件系统,或设备上的样式向上一层,逻辑层:表,索引,视图,内建组件等等等视图层:最终用户所看到的样子
Mysql在07被sun以10亿美金收购,sun为了补全自己公司产品,sun有应用程序,有系统,就缺少一个数据库系统,意图构建一个完整的产品线而翻身,sun一直的管理理念完全没有技术的一半,迄今为止,计算机领域有很多技术都是由sun贡献。然而sun收购mysql后,却成了压垮sun的最后一根稻草。本来财务状况已经不佳,收购mysql后不但没有翻身,反而拖垮整个财务状况。Sun在国际上寻求收购,起初准备买向IBM,IBM是有整套系统的公司,sun到IBM手里无非就是变相的捏死一个竞争对手而已。但sun最终被oracle以73亿美金收购,oracle并没有成熟的硬件和操作系统,所以卖给oracle能够让血脉延续。随着sun的投入oracle怀抱,mysql成了陪嫁丫头!
版本:Mysql,MariaDB,PostgreSQL,SQLte
Mysql存储引擎查看MariaDB [(none)]> SHOW ENGINES;
Mysql单进程多线程,连接线程和守护线程
Mysql配置文件:集中式配置文件,能够为mysql各应用程序提供配置信息[mysqld] 专用于mysqld服务[mysqld_safa] 线程安全的mysql专用[mysqld_multi] 多实例共享模型的mysql[server] 服务器程序[mysql] 客户端[mysqldump] 数据备份导入导出工具[client] 都有效
Parameter = value Mysql中下划线和中线有些需要区分有些则不需要区分Skip-name-resolve& Skip_name_resolve
Mysql也支持大量命令行选项
MYSQL配置文件查找路径:/ETC/MY.CNF-/ETC/MYSQL/MY.CNFMYSQLHOME路径下/MY.CNF编译安装时指定的—DEFAULT-EXTRA-FILE=/PATH/TO/SOMEDIR/MY.CNF,最后找当前用户的家目录隐藏文件.MYSL.CNF
MYSQL的安装方式:1,OS VENDOR YUM安装2,展开既可以方式3,RPM包安装方式4,源码编译安装方式
安装后设定:
为所有ROOT用户设定密码。
(一)设置密码 1, MYSQL >SET PASSWORD 自动触发授权表2, MYSQL > update mysql.user SET password=PASSWORD(‘your_pass’) WHERE clause; 在内存中进行认证,必须手动重读配置文件3, #mysqladmin 设置(二)删除所有匿名用户Mysql > DROP USER ‘ ’@’localhost’;
上述两个步骤可运行命令:mysql_secure_installaton来实现(三)建议关闭主机名反解功能元数据数据库:mysqlUser,host等:
mysql命令行客户端程序,服务端mysqld客户端程序:Mysql:交互式CLI工具Mysqldump:mysql数据导出工具,备份工具,基于mysql协议向mysqld发送查询请求,并将查询的来的所有数据转换成insert等写操作语句保存在文本文件中。Mysqladmin:基于mysql协议管理mysqldMysqlimport:数据导入工具
非客户端管理工具:Myisamchk:检测修复myisam表工具,myisampack打包工(打包后只为‘只读’)
如何获取MYSQL默认使用配置:Mysql –print-defaultsMysqld –print-defaults
[root@[node108] ~]# mysql --print-defaultsmysql would have been started with the following arguments:--port=3306 --socket=/tmp/mysql.sock --no-auto-rehash
--no-auto-rehash这里禁用了mysql内部补全功能,这个补全有一个全新,每次我们链接数据库时,他不得不把数据库所有组件查询一编,做成一个hash表才能实现,所以这样就使得mysql链接mysql数据库时,随着mysql组件的增加mysql变得越来越慢
[root@[node108] ~]# mysqld --print-defaultsmysqld would have been started with the following arguments:--datadir=/var/lib/mysql --socket=/var/lib/mysql/mysql.sock --user=mysql --symbolic-links=0 --port=3306 --socket=/tmp/mysql.sock --skip-external-locking --key_buffer_size=256M --max_allowed_packet=1M --table_open_cache=256 --sort_buffer_size=1M --read_buffer_size=1M --read_rnd_buffer_size=4M --myisam_sort_buffer_size=64M --thread_cache_size=8 --query_cache_size=16M --thread_concurrency=8 --log-bin=mysql-bin --binlog_format=mixed --server-id=1 [root@[node108] ~]#
客户端类用户程序的可用选项。-u ,--user= 指明用户-h ,--host= 指明主机-p ,--password= 指明密码-P ,--prot= 指明端口--protocol= 指明协议-S ,socket= 指明套接字-D ,--database= 切换为默认库-C ,--compress 是否压缩
Mysql而言 –e选项,-e选项是不连接mysql,而执行sql语句的
[root@[node108] ~]# mysql -e "show databases;" |
---|
Database |
information_schema |
mysql |
performance_schema |
test |
[root@[node108] ~]#
Mysql交互模式:可运行命令有两类:1,客户端命令,\h,help 2,服务端命令:sql语言,需要语句结束符;。
Mysql脚本模式:
mysql –Uusername -hHOST -Ppassword < /path/from/somefile.sql
Mysql > source /path/from/somefile.sql
Mysql服务器端工作特性(mysqld):工作特性有多种定义方式:命令行选项:配置文件参数
获取可用参数
mysqld --help --verbose
获取运行中的MYSQL进程使用各服务器参数及其值Mysql > SHOW GLOBAL WARIABLES;Mysql > SHOW SESSION VARIABLES;注意:其中有些参数支持运行时修改,会立即生效;有些参数不支持,则只能通过修改配置文件,并重启服务器程序生效;有些参数作用域是全局的,且不可改变;有些可以为每个用户提供单独的设置;
修改服务器变量的值:Mysql > help SET 获取帮助语法
全局:Mysql > SET GLOBAL system_var_name=value;Mysql > SET @@global.system_var_name=value;会话:Mysql > SET [SESSION] system_var_name=value;Mysql > SET @@[session.]system_var_name=value;
状态变量:用于保存mysqld运行中的自动统计数据的变量,是不可以更改的Mysql > SHOW GLOBAL STATUS;这里面包括众多数据包括运行的命令,包括访问,包括连接等等等!在后面文章中将会提到.Mysql > SHOW SESSION STATUS;