知识大全 MySQL 文件系统
Posted 目录
篇首语:即使道路坎坷不平,车轮也要前进;即使江河波涛汹涌,船只也航行。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 MySQL 文件系统相关的知识,希望对你有一定的参考价值。
MySQL 文件系统 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
实际上 这不是通常意义上的文件系统 它没有磁盘空间 而是使用MySQL 守护程序来存储数据 可以把SQL 表和一些函数通过文件系统来实现 一 怎样实现? 让我们来看使用实例 [root@localhost /root]# mount t corbafs o `cat /tmp/mysqlcorbafs ior` none /mnt/mysql/ [root@localhost /root]# mount /dev/hda on / type ext (rw) none on /proc type proc (rw) none on /dev/pts type devpts (rw gid= mode= ) /dev/hda on /mnt/win type vfat (rw mode= ) /dev/hda on /mnt/linux type vfat (rw noexec nosuid nodev mode= ) none on /mnt/mysql type corbafs (rw IOR: e d b c a f f c d a e a e e e bc a ef ae c c f) [root@localhost /root]# ls la /mnt/mysql/ total r xr xr x root root dets : uptime dr xr xr x root root dets : test dr xr xr x root root dets : mysql [root@localhost /root]# cat /mnt/mysql/ uptime [root@localhost /root]# cat /mnt/mysql/mysql/user/Host cpq spam ee cpq spam ee localhost localhost localhost localhost localhost localhost [root@localhost /root]# cat /mnt/mysql/mysql/user/Insert_priv N N N N N N Y Y [root@localhost /root]# umount /mnt/mysql/ 二 为什么要这样做呢? 在一些情形下 这样做能让工作更加轻松 MySQL 和文件系统都能叫做数据库 但是有着绝然不同的概念和优缺点 在文件系统里 对象能很快而且很容易找到 即使改变名字也能很快找到 每一个初学者大概都应该学会move/copy/rename/delete这样的操作 但是SQL 不一样 他通过应用程序来操纵存储在文件系统上的数据 而MySQL 文件系统把SQL 做到了用户级 用户能用他们知道的方式来操作数据库 任何一个新产品需要通过网络存取数据的话 必须支持一些协议以及可能的其他办法通过网络存取文件系统 MySQL 表就可以通过这样的方式来存取 即使MySQL 没有移植到对应的平台 备份和版本控制 普通的文件系统通过任何备份软件就可以实现 数据可以通过diff来比较并且用cvs 来控制版本 更短的编程时间 有时候人们需要保存简单的数据 像当前日期或者站点名字 这些数据很少改变 普通的方法需要使用 连接服务器 > 选择数据库 > 执行命令 > 存储结果 而使用 MySQL 文件系统后 只需要一句话 (PHP实现) include(¨/mountpoint/database/table/field¨); 或者 换一种方式表达 include(¨/mnt/mysql/sitedata/topic/todaytopic¨); 这样就很容易理解 也占用了较少的空间 还可以通过SAMBA 来共享 /mnt/mysql 达到直接修改SQL 数据库的目的 能直接写文本到数据库 或者使用拷贝/粘贴功能把图片放入数据库 这要比用Perl 或者PHP 写几百行程序省力多了 三 性能如何? 在发表这篇文章的时候 这个文件系统还处于原型开发阶段 因此 速度还不是很理想 如果到了正式发布的时候 一些数据库功能会比使用 SQL 要快 当然 很多还是没法和SQL 相比 无论是性能上还是功能上 很多复杂的查询依然需要通过SQL 语句来完成 但是 这样节省了很多开发和培训的时间 所以在效率上来说也是一种节省 四 支持的表类型 目前这个文件系统支持所有的表类型 MyISAM DBD HEAP ISAM 五 其他的特色 在第一步开发中实现的还只是只读 很快会有能读写的版本出来 目前的计划是把数据库对象映射成文件和目录对象 让我们来看看例子 < #建立表 CREATE TABLE invoice ( invoice_id int( ) unsigned NOT NULL auto_increment invoice_no int( ) unsigned DEFAULT NOT NULL payee char( ) DEFAULT NOT NULL PRIMARY KEY (invoice_id) KEY payee (payee) ); # 插入数据 INSERT INTO invoice VALUES ( Company AB ); INSERT INTO invoice VALUES ( Company CD ); INSERT INTO invoice VALUES ( Company EF ); < 因为 MySQL 没有办法使用记录号 所以我们必须建立主键 就有了以下的目录结构 /mountpoint/database/table/primary_key/field 这样 每个列出现在不同的文件行之中 文件树的结构如下 /mnt/mysql/mydata/invoice/ /invoice_id /mnt/mysql/mydata/invoice/ /invoice_no /mnt/mysql/mydata/invoice/ /payee /mnt/mysql/mydata/invoice/ /invoice_id /mnt/mysql/mydata/invoice/ /invoice_no /mnt/mysql/mydata/invoice/ /payee /mnt/mysql/mydata/invoice/ /invoice_id /mnt/mysql/mydata/invoice/ /invoice_no /mnt/mysql/mydata/invoice/ /payee 另外 还有第二个办法可以使用 /mountpoint/database/table/ table 和 /mountpoint/database/table/primary_key/ record /mnt/mysql/mydata/invoice/ table /mnt/mysql/mydata/invoice/ / record /mnt/mysql/mydata/invoice/ /invoice_id /mnt/mysql/mydata/invoice/ /invoice_no /mnt/mysql/mydata/invoice/ /payee /mnt/mysql/mydata/invoice/ / record /mnt/mysql/mydata/invoice/ /invoice_id /mnt/mysql/mydata/invoice/ /invoice_no /mnt/mysql/mydata/invoice/ /payee /mnt/mysql/mydata/invoice/ / record /mnt/mysql/mydata/invoice/ /invoice_id /mnt/mysql/mydata/invoice/ /invoice_no /mnt/mysql/mydata/invoice/ /payee 这些文件是隐含的 以防重复 主要用来方便地通过文本文件浏览器来查看 现在 在那些需要使用SQL 语句搜索最小 最大 最后等数据 可以通过符号连接来实现了 /mountpoint/database/table/primary_key/ max 或者 /mnt/mysql/mydata/invoice/invoice_id/ max 或者指向 /mountpoint/database/table/field 和 /mnt/mysql/mydata/invoice/ 同样的就可以返回一行的 min/max/sum/avg 等数值 这能很快并且很容易地实现 /mnt/mysql/mydata/ keys/ /mnt/mysql/mydata/ keys/invoice_id/ /mnt/mysql/mydata/ keys/payee/ 符号连接到主键 /mnt/mysql/mydata/ keys/ primary_key/ 实际上指向 /mnt/mysql/mydata/ keys/invoice_id/ 还有一些隐藏文件提供键类型 /mnt/mysql/mydata/ keys/invoice_id/ type /mnt/mysql/mydata/ keys/payee/ type 第一个文内容为 ¨PRIMARY KEY¨ 第二个为 ¨KEY¨ 另外还可以用索引来排序记录 如果读取下面的目录 /mnt/mysql/mydata/ keys/payee/asc/ PHP 的readdir() 函数就以升序返回数据的符号连接 另外还有一些全局函数 /mountpoint/ version /mountpoint/ last_insert_id /mountpoint/ uptime /mountpoint/database/ raid ( / ) /mountpoint/database/ type (ISAM/MyISAM/HEAP/DBD) /mountpoint/database/ tables /mountpoint/database/table/ created /mountpoint/database/table/ last_updated /mountpoint/database/table/ last_checked /mountpoint/database/unt 六 写权限? 在开发的第二阶段 会有措施执行SQL 语句 现在的思路是 采用目录 /mountpoint/mand/ 然后执行命令 把SQL 语句作为目录建立 或者建立目录把SQL 语句作为文件放入这个目录 两个方案都有优点 第一个方案可以重新使用SQL 语句 但是这样的目录名实在不敢令人苟同 第二个方案采用信号量文件 语句执行完毕就删除这个文件 没有任务使用时 目录也被删除 对于那些慢速的查询响应 可以选择timeout 的时间 七 权限管理 在权限管理方面 可以使用Unix 的权限管理方式 这样的方案看来是最好的 cha138/Article/program/MySQL/201311/29464相关参考
改默认编码 /etc/initd/mysqlstart(stop)为启动和停止服务器 /etc/mysql/主要配置文件所在位置f /var/lib/mysql/放置的是数据库表文件夹这里的
MySQL不安全临时文件建立漏洞 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 受影响系统
由于临时断电使用kill中止MySQL服务进程所有的这些都可能会毁坏MySQL的数据文件如果在被干扰时服务正在改变文件文件可能会留下错误的或不一致的状态因为这样的毁坏有时是不容易被发现的当你发现这
MySql通过二进制日志文件恢复数据 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! Mysql配
Spring+JPA+MySQL的配置文件 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 一直在
本文将重点讲述shell实战中的mysqlindex文件检查机制问题请先看代码: #!/bin/sh def_check_index() #codebyscpman # #mail:
Mysql数据库对文件操作的封装 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!lishixinzh
首先建立一个connphp的文件用来链接数据库复制代码代码如下:<?php$link=mysql_connect("mysql_host""mysql_user""mysql_passwor
MySQL存取权限系统 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! MySQL用户名和口令
MySql配置主从复制读写分离 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! myini配置文件