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

[经验分享] MySQL存储引擎

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2016-1-12 09:02:32 | 显示全部楼层 |阅读模式
使用外健 foreign key
foreign key(当前表里字段名) references 表名(表名里的字段名) on update cascade on delete cascade engine=innodb;
     外健         当前表         引用  另一表名 另一表字段名  同步更新串联同步删除串联

1.表的存储引擎要是innodb存储引擎
2.外健字段的类型要匹配
3.被参照字段要有明确的索引(index.unique,primary key)


三.mysql存储引擎 I/O insert out 插进去 读出来
1.mysql 体系结构
mysql是由连接池、sql接口、分析器、优化器、
缓存和缓冲、管理工具、存储引擎、物理存储设备
1.连接池:进程数限制、内存检查、缓存检查等
2.SQL接口:用户通过sql客户发过来的命令,由sql接口接收,sql操作有:
        DML数据操作语言:查询,修改,升级数据等
        DDL数据定义语言:创建一个新的数据库,新的索引,删除一个用户等
3.分析器:分析查询语句 事务处理 对象访问权限
4.优化器:优化访问路径、生成执行树
5.缓存和缓冲 保存sql查询结果
6.管理工具,备份,恢复,安全,移植,集群等,这些工具一般和文件系统打交道
  不需要和mysql-server打交道,他们对应的都是命令。
7.存储引擎:用来管理文件系统,将逻辑结构转换为物理结构的程序。负责为数据库执行实际的数据I/O操作
  不同的存储引擎有不同的功能和存储方式;
8.物理存储设备(文件系统)

show engines 查看当前数据库服务器支持哪些存储引擎
show variables like "table_type"显示当前服务器所使用的引擎
       变量     如
create talbe 表名(字段列表)engine=存储引擎名;
create table s1(id int)engine=innodb;

show create table s1;
查询是什么搜索引擎

1)更改引擎  <- 法1
alter table 表名 engine=存储引擎名
alter table t1 engine=MyISAM

查看修改后的结果
show create t1\G;

2)更改引擎   <- 法2
mysql_converttable_format --usr=root --password=wsyht123 --socker=/data/3306/mysql.sock --engine-MyISAM wsyht t1  #wsyht是库名,和t1是表名


show variables like "table_type";
显示表类型

vim /etc/my.cnf
在上文件打开如下文件
default-storage-engine=innodb;
默认的存储引擎InnoDB



yg_id   员工编号
yg_name 员工姓名

create table studb.yg_tab(
yg_id int(2) primary key auto_increment,
yg_name varchar(10) not null,
)engine=innodb;

gz_tab
id    工资记录编号
gz_id 员工编号
gz    工资

create table studb.gz_tab(
id int(2) primary key auto_increment,
gz_id int(2) not null,
gz float(7,2),
foreign key(gz_id) references yg_tab(yg_id) on update
cascade on delete cascade)engine=innodb;

insert into studb.yg_tab(yg_name)vlaues("jim");

insert into gz_tab(gz_id,gz)values(1,100000.99);

update yg_tab set yg_id=8 where yg_id=2; 更新表记录
更新yg_tab这个表设置成id=8,条件id=2的编号里修改

myisam
默认使用的存储引擎
独享表空间
不技持事务和事务回滚
支持表锁

innodb
共享表空间
支持事务和事务回滚
支持行锁

事务:你的一次sql操作从开始执行到正确执行结速的这个过程称为事务
事务回滚:

set autocommit=0;
关闭自动提交
接着提交
commit; 提交,出问题执行错误,就要回滚rollback;

start transaction;
开启一个事务

create table t200(id int)engine=innodb; 必须要在innodb的情况下开启事务
insert into t200 values(200);
select *from t200;

rollback;
回滚 回复到之前的状态

commit;提交


锁机制(解决用户的并发访问问题)
锁类型
写锁(delete update insert)互斥锁 排他锁
读锁(select desc show)共享锁

幻读
脏读

锁粒度
表锁(myisam) 并发访问量不高  系统开销小
行锁(innodb) 并发访问高      系统开销大


10 1 writelock



运维网声明 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-163288-1-1.html 上篇帖子: MySQL 文本文件的导入导出数据的方法 下篇帖子: MySQL主从同步配置实现数据库备份
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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