-
Notifications
You must be signed in to change notification settings - Fork 0
Mysql
Mysql 文件缺点:数据冗余和不一致性,数据访问困难,数据孤立,完整性问题,原子性问题(一个数据必须从一个稳定状态另一个稳定状态),并发访问异常,安全性问题。
文件:表示层:看得到的样子, 逻辑层:文件系统:将底层的数据库抽象为用户层能够看到的,存储引擎。 物理层:元数据,数据块
关系型数据:表示层:表 逻辑层:存储引擎 物理层:数据文件 DBMS:数据库管理系统,层次模型,网状模型,关系模型。 RDBMS:关系型数据库管理系统,同一类实体的集合,
关系模型::(结构化数据) 实体关系模型:E-R关系模型,拆分数据,降低冗余 对象关系模型:图片这类的,指针指向, 半结构化数据模型。 ,扩展。。。。用标签标记。
关系:代数运算,合,并,补,全,差集合。 SQL:structure query language,
ANSI:美国国家标准委员会, DML,DDL,DCL ---数据,,语言 增删查改(insert,delete,select,update) create,drop,alter. grant,revoke,
SQL查询语句: DDL(完整性定义语言,视图定义,事物控制,嵌入式SQL和动态的SQL),DML,DCL(授权的)
RDB对象:库,表,索引,视图,用户,存储过程,存储函数,触发器,事件调度器(ddl对这些数据的创建,删除,修改) 约束:域约束,数据类型约束: 外键约束,参照另一个表,关联必须有,引用完整性约束。降低数据冗余。 主键约束,某字段能唯一标识此字段所属的实体,不容许为空。一个一个 唯一性约束:没一行的某字段,都不容许出现相同值,可以为空,一个多个 检查性约束:规定的范围。(constraint)
数据的查询与管理: 存储管理器:权限及其完整性管理器 事物管理器 文件管理器 缓冲区管理器: 查询管理器:DML解释器 DDL解释器 查询执行引擎
单进程多线程, 线程:守护线程,应用线程,(线程重用,应用缓存) 32bit ------------>2.75G
一个缺点:SMP对称多处理器,多核处理器。多服务器分担。
关系运算: 投影,只输出指定属性 选择,只输出符合条件的行, 自然链接,两个表通过等值连接的数据,具有相同名字的所有属性上所有取值相同的行, 笛卡尔积,(a+b)*(c+d) 一个表中的每一行,和另外表中的每一行分别链接。交叉链接 并:集合运算。
使用程序设计语言如何跟RDBMS交互: 嵌入式SQL:与动态SQL类似,但其语言必须程序编译时完全确定下来; ODBC 动态SQL:程序设计语言使用函数(mysql_connect())或者方法与RDBMS服务器建立连接,并进行交互;通过建立连接向SQL服务器发送查询语句,并将结果保存至变量中而后进行处理; JDBC
用户--->链接管理器(处理用户请求)-------解析器(缓存)--------->优化器,
myisam:数据仓库,查询很快 innodb:在线事物处理系统
链接管理器:处理客户端链接 线程管理器:用户的响应线程 用户模块:权限有无,验证用户, 命令分发模块:检查缓存,记录日志, 解析器,判定属于那种语句,解析查询并生成解析树 优化器,表定义模块,表维护模块,状态报告模块,复制模块, 访问控制模块,判断用户的操作是否有权限, 表管理器:完成真正意义上的操作,复制创建,读取或修改表定义文件,维护表描述符高速缓存,管理表锁, 存储引擎。--------------------------->磁盘数据,
优化器,select最佳查询策略,关键模块 表定义模块,数据修改之类,INSERT,ALTER,UPDATE ... 表维护模块,检查,修改,备份,恢复,优化(碎片整理)及解析。 表修改模块,创建,删除,重命名,移除,更新,插入之类的操作, 状态报告模块,更新用户的每一次操作, 复制模块,
定长的数据存储速度快。
文件中记录组织: 堆文件组织:一条记录可以放在文件中的任何位置 顺序文件组织:数据更新成本很打,根据“搜索码”值顺序存放。 散列文件组织:n个子容器,除N取余数,
表空间: 实现将多个表数据组织在一个数据文件中的一个管理组件。类似LVM,自动增长。。
数据字典:各种关系的元数据, 关系的名字,字段的名字,字段的类型和长度,视图,约束。 用户名字,授权,密码。
缓冲区管理器: 缓存置换策略, 被钉住的块,
都是通过变量来调整的,300多个啊,熟悉了就是一个合格的DBA。
特性:speed,reliability,scalability,ease of use, porability and standards compliance, multiuser support.
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;
编译安装,详见
MyISAM: 每表三个文件: .frm: 表结构 .MYD:表数据 .MYI:表索引
InnoDB: 所有表共享一个表空间文件; 建议:每表一个独立的表空间文件; .frm: 表结构 .ibd: 表空间(表数据和表索引)
show variables like '%innodb%' [mysqld] innodb_file_per_table = 1 重启mysqld修改每个表一个表空间,innodb的。
clear (\c) Clear the current input statement.临时结束命令 connect (\r) Reconnect to the server. Optional arguments are db and host. delimiter (\d) Set statement delimiter. 语句结束符号, ego (\G) Send command to mysql server, display result vertically.无论语句结束符是什么,直接将此语句送到服务器端执行,而且结果以竖排方式显示; go (\g) Send command to mysql server. 无论语句结束符是什么,直接将此语句送至服务器端执行; prompt (\R) Change your mysql prompt. rehash (#) Rebuild completion hash.对新建的对象,支持补全功能; source (.) Execute an SQL script file. Takes a file name as an argument. status (\s) Get status information from the server. system (!) Execute a system shell command. 执行shell命令 mysql --html/--xml ---指定的格式输出信息。可复制的html文件中。 mysqladmin -u -p password '新的密码' mysqladmin ping mysqladmin processlist mysqladmin status --sleep 2 --count 2 :每隔两秒共显示两次。 mysqladmin extended-status:显示状态变量。 mysqladmin variables:显示服务器变量。 还有,flush-privileges==reload,flush-table(关闭所有打开的表),flush-threads(重置线程池,清除),flush-status(重置大多数的状态标量),flush-logs(二进制和中继日志滚动),flush-hosts(清除主机过多的错误,) ,refresh=flush-hosts+flush-logs,
shutdown ,version,stop/start-slave:(启动/关闭复制启动从服务器复制线程)
mysqldump/import/check-----------客户端工具。 存储引擎,也被称为表类型: MyISAM表: 无事务,表锁 InnoDB表:事务,行锁---》innodb_file_per_table show engines;:支持的存储引擎。 show table status like '表\G'; :查看表的基本信息。重要。 mysqld --help --verbose 看到很多信息配置。
程序语言连接数据的方式: 动态SQL:通过函数或方法与数据库服务建立连接, 嵌入式SQL:使用程序设计语言如何跟RDBMS交互: 嵌入式SQL:与动态SQL类似,但其语言必须程序编译时完全确定下来;ODBC 动态SQL:程序设计语言使用函数(mysql_connect())或者方法与RDBMS服务器建立连接,并进行交互;通过建立连接向SQL服务器发送查询语句,并将结果保存至变量中而后进行处理;JDBC
/etc/my.cnf --> /etc/mysql/my.cnf --> $MYSQL_HOME/my.cnf --> --default-extra-file=/path/to/somefile --> ~/.my.cnf 最后找到生效。