设为首页 收藏本站
查看: 401|回复: 0

[经验分享] mysql原理

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2016-7-11 09:26:53 | 显示全部楼层 |阅读模式
基于文件存储的数据库特点1)数据冗余和一致性(同一个文件,存储为多处,难以保持一致性)
2)数据访问困难(大文件)
3)数据是孤立的(格式不统一)
4)数据完整性
5)并发访问异常(是否锁住文件)


文件系统可以理解为存储引擎
表示层(文件,表)<-->逻辑层(文件系统,存储引擎)<-->物理层(元数据,数据块)


DBMS:层次型,网状型,关系型

数据存储模型(结构化数据模型)
1)关系模型
2)E-R实体-关系模型,将有冗余的数据拆分出来,独立做成单独的实体
3)对象关系模型
4)半结构化数据模型(标签和数据),XML(扩展标记语言)
    <name>Jerry</name>


DML:增删查改    INSERT,DELETE,SELECT,UPDATE
DDL:数据定义语言    CREATE,DROP,ALTER
    RDB对象:关系型数据库对象 库,表,索引,视图,用户,存储过程,存储函数,触发器,事件调度器
    约束,constraint

    1)域约束:数据类型约束

    2)外键约束:引用完整性约束,(两个表之间,映射的数据要对应不能映射到不存在的数据),可以降低数据冗余
    3)主键约束:某属性能唯一标识此字段的实体,不允许为空。可以为多个字段。可以作为主键的字段成为候选键
    4)唯一性约束:每一行某个字段不能相同,可以为空

    5)检查性约束:age:int

DCL:数据控制语言,权限控制    GRANT,REVOKE


查询管理器

    DML解释器

    DDL解释器

    查询执行引擎




存储管理器
    权限和完整性管理器
    事务管理器

    文件管理器

    缓冲区管理器

wKiom1eArWHAlunbAACcX2oZL3c476.jpg

mysql为单进程多线程

1)守护进程

2)应用线程

网站的瓶颈一般在数据服务器。


关系
    关系代数运算-交集,差集,并集,全集,补集
SQL:Structure Query Language,结构化查询语言,由system R(IBM)发展而来.后来出现Ingres,Oracle,Sybase
ANSI:ansi-sql



投影:只输出指定的是属性(元组)
选择:只输出符合条件的行
自然连接:不同表中,具有相同属性取值的取值相等则关系建立联系,并输出对应的行
笛卡尔积:也称为交叉连接,(a+b)×(c+d),多表查询可能用到
并:分别查询后组合


SQL标准:sql-86,..., sql-08
程序设计语言如何与mysql交互?
嵌入式SQL:与动态SQL类似,但其语言必须在程序编译时完全确定下来;
    ODBC(C)

动态SQL:程序设计语言使用函数或者方法与RDBMS建立连接,向SQL服务器发送查询语句,并将结果保存到变量中
    JDBC(Java)



插件式存储引擎
5.5.8:MyISAM,适合于查询比较多,修改比较少的数据库,可作为数据仓库。不支持事务;
5.5.8后:InnoDB,适合于在线事务处理系统;

数据库管理系统结构
wKioL1eArWLyijXOAACbCPlZ3Pw073.jpg wKiom1eArWLCi-FoAABJR1G7KG0250.jpg

wKiom1eArWLwURrgAAF-BOCNeKI797.jpg

连接管理器监听在某个端口-->线程管理器-->用户模块-->命令分发模块

解析器:解析查询,并生成解析树,交给特定模块完成

查询优化器:优化查询策略,性能关键模块

访问控制器:负责判定操作是否有权限执行

表管理器:创建、读取、修改表结构定义文件,维护表描述符高速缓存(缓存在内存中),管理表锁

表定义模块:创建、删除、重命名、移除、更新和插入表等操作

表修复模块:检查、修改、备份、恢复、优化(碎片)、解析等操作


加载数据,最小单位是磁盘块,加载到内存中再做处理

数据块由存储引擎管理(Storage Engine),可以由多个磁盘块组成一个数据块

文件中记录的组织

    堆文件组织:一条记录可以放在文件中的任意位置;更新数据方便,查询成本大,

    顺序文件组织:根据“搜索码”值顺序进行存放;更新数据成本比较大(使用指针,记录行的位置,数据更新时,直接更改指针,但也会带来问题:物理上相邻的数据,在逻辑上可能不相邻,读取数据时,由于逻辑数据不相邻,可能会读取多个磁盘块,因此要执行多次I/O操作,速度较慢),查询方便

    散列文件组织:

        散列函数:/4,不当的散列函数,可能使存储分配不均



表空间:table space


数据字典 Data Dictionary

    关系的元数据

        关系名称

        字段名称

        字段类型和长度

        视图

        约束


缓冲区管理器

    提供缓存置换策略,最少访问

    钉住的块


MariaDB

Percona


cmake



Choosing the MySQL version
GA (General Availability)
RC (Release Candidate)
beta
alpha


wKioL1eArWPSf4kpAAHd9OUgitc563.jpg






wKiom1eArWPik561AAHiTIuG78I975.jpg

This is done in a specific order, On Unix-based systems the following order of precedence is used:
/etc/my.cnf
/etc/mysql/my.cnf
$MYSQL_HOME/my.cnf
/path/to/file when --defaults-extra-file=/path/to/file is specified
/.my.cnf


修改用户密码
mysqladmin -u username -h host_name password "new_password" -p
mysql> set password for 'username'@'host_name'=password('new_password');
mysql> update mysql.user set password=password('new_pasword') where condition;
mysql> flush privilage


删除用户
mysql> DROP USER ’’@localhost;   





运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-242384-1-1.html 上篇帖子: MySQL问题:You can't specify target table '表名' for update in FROM clause 下篇帖子: mysql初步认识 mysql
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表