mysql 数据备份与存储引擎

数据备份

mysql_home/bin下提供了mysqldump.exe / mysqldump.sh 的可执行文件,用于备份数据库
语法(无需进入MySQL命令行,在本机命令行即可)
mysqldump -h IP -P port –u账号 –p --databases 数据库 [表名1 表名2..]  > 文件路径
手动方式
-- mysqldump –u -账号 –密码 数据库 [表名1 表名2..]  > 文件路径
mysqldump -h localhost -P 3306 -uroot -p --databases test > d:\temp.sql
-- 比如: 把temp数据库备份到 d:\temp.bak
mysqldump -uroot -p --databases test > f:\temp.bak
-- 如果你希望备份是,数据库的某几张表
mysqldump -uroot -p --databases test dept > f:\temp.dept.sql
自动备份
把备份数据库的指令,写入到系统可执行文件(.bat / .sh),然后通过本地系统的任务管理器去定时调用可执行文件
备份文件恢复(需要进入mysql命令行)
mysql> source d:\temp.dept.bak

存储引擎

特点myisaminnodbBDBmemoryarchive
批量插入的速度非常高
事务安全支持支持
全文索引支持
锁机制表锁行锁页锁表锁行锁
存储限制没有64TB没有没有
B树索引支持支持支持支持
哈希索引支持支持
集群索引支持
数据缓存支持支持
索引缓存支持支持支持
数据可压缩支持支持
空间使用N/A非常低
内存使用中等
外键支持支持
常用的引擎(myisam / innodb/ memory)
myisam 存储: 如果表对事务要求不高,同时是以查询和添加为主的,我们考虑使用myisam存储引擎. ,比如 bbs 中的 发帖表,回复表.

INNODB 存储: 对事务要求高,保存的数据都是重要数据,我们建议使用INNODB,比如订单表,账号表.
InNoDB与MyISAM异同
1、InnoDB 支持事务,
	支持行级别锁定,
	支持 B+tree、Fulltext (InNoDB从1.2.X版本开始支持全文搜索的技术)等索引,不支持 Hash 索引,
	
	但是给了又有一个特殊的解释:InnoDB存储引擎 是支持hash索引的,
	不过,我们必须启用,hash索引的创建由InnoDB存储引擎引擎自动优化创建,
	是数据库自身创建并使用,DBA(数据库管理员)无法干预;
2、MyISAM 不支持事务,支持表级别锁定,支持 B-tree、Full-text 等索引,不支持 Hash 索引;
3、Memory 不支持事务,支持表级别锁定,支持 B-tree、Hash 等索引,不支持 Full-text 索引;
4、MyISAM引擎不支持外键,InnoDB支持外键
5、MyISAM引擎的表在大量高并发的读写下会经常出现表损坏的情况
6、对于count()查询来说MyISAM更有优势,MyISAM直接通过计数器获取,而InnoDB需要通过扫描全部数据,
	虽然InNoDB存储引擎是支持行级锁,是where对他主键是有效,非主键的都会锁全表的
7、MyISAM引擎的表的查询、更新、插入的效率要比InnoDB高,
	如果你的数据量是百万级别的,并且没有任何的事务处理,那么用MyISAM是性能最好的选择。
	并且MyISAM可以节省很多内存,因为MyISAM索引文件是与数据文件分开放置,并且索引是有压缩,内存使用率提高不少
8、平台承载的大部分项目是读多写少的项目,MyISAM读性能比InNoDB强很多
  • 概括:
  1. 事务安全(MyISAM不支持事务,INNODB支持事务)
  2. 查询和添加速度(MyISAM批量插入速度快)
  3. 支持全文索引(MyISAM支持全文索引,INNODB不支持全文索引)
  4. 锁机制(MyISAM时表锁,innodb是行锁)
  5. 外键 MyISAM 不支持外键, INNODB支持外键. (在PHP开发中,通常不设置外键,通常是在程序中保证数据的一致)

Memory 存储,比如我们数据变化频繁,不需要入库,同时又频繁的查询和修改,我们考虑使用memory, 速度极快. (如果mysql重启的话,数据就不存在了)

Myisam注意事项
如果你的数据库的存储引擎是myisam,请一定记住要定时进行碎片整理
	举例说明: 
		create table test100(
			id int unsigned ,name varchar(32)
		)engine=myisam;
		
		insert into test100 values(1,’aaaaa’);
		insert into test100 values(2,’bbbb’);
		insert into test100 values(3,’ccccc’);
	我们应该定义对myisam进行整理
		optimize table test100;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值