`
85977328
  • 浏览: 1904142 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

MYSQL使用心得(五)----InnoDB与MyISAM

 
阅读更多
本文主要整理了Mysql 两大常用的存储引擎MyISAM,InnoDB的六大常见区别:

构成上的区别
MyISAM
每个MyISAM在磁盘上存储成三个文件。第一个文件的名字以表的名字开始,扩展名指出文件类型。
.frm文件存储表定义。
数据文件的扩展名为.MYD (MYData)。
索引文件的扩展名是.MYI (MYIndex)。

InnoDB
基于磁盘的资源是InnoDB表空间数据文件和它的日志文件。
.user.frm存储表结构。
user.ibd存储数据文件。

事务处理上方面
MyISAM
MyISAM类型的表强调的是性能,其执行数度比InnoDB类型更快,但是不提供事务支持
InnoDB
InnoDB提供事务支持事务,外部键等高级数据库功能

SELECT UPDATE,INSERT,Delete操作
MyISAM
如果执行大量的SELECT,MyISAM是更好的选择
InnoDB
1.如果你的数据执行大量的INSERT或UPDATE,出于性能方面的考虑,应该使用InnoDB表
2.DELETE FROM table时,InnoDB不会重新建立表,而是一行一行的删除。
3.LOAD TABLE FROM MASTER(将主服务器的数据拷贝到从服务器的一个途径是使)操作对InnoDB是不起作用的,解决方法是首先把InnoDB表改成MyISAM表,导入数据后再改成InnoDB表,但是对于使用的额外的InnoDB特性(例如外键)的表不适用

对AUTO_INCREMENT的操作
MyISAM
每表一个AUTO_INCREMEN列的内部处理。
MyISAM为INSERT和UPDATE操作自动更新这一列。这使得AUTO_INCREMENT列更快(至少10%)。在序列顶的值被删除之后就不能再利用。(当AUTO_INCREMENT列被定义为多列索引的最后一列,可以出现重使用从序列顶部删除的值的情况)。
AUTO_INCREMENT值可用ALTER TABLE或myisamch来重置
对于AUTO_INCREMENT类型的字段,InnoDB中必须包含只有该字段的索引,但是在MyISAM表中,可以和其他字段一起建立联合索引。
InnoDB
如果你为一个表指定AUTO_INCREMENT列,在数据词典里的InnoDB表句柄包含一个名为自动增长计数器的计数器,它被用在为该列赋新值。
自动增长计数器仅被存储在主内存中,而不是存在磁盘上
参考:http://kb.cnblogs.com/page/82976/

表的具体行数
MyISAM
select count(*) from table,MyISAM只要简单的读出保存好的行数,注意的是,当count(*)语句包含 where条件时,两种表的操作是一样的。
InnoDB
InnoDB 中不保存表的具体行数,也就是说,执行select count(*) from table时,InnoDB要扫描一遍整个表来计算有多少行


MyISAM
表锁
InnoDB
提供行锁(locking on row level),提供与 Oracle 类型一致的不加锁读取(non-locking read in
SELECTs),另外,InnoDB表的行锁也不是绝对的,如果在执行一个SQL语句时MySQL不能确定要扫描的范围,InnoDB表同样会锁全表,例如update table set num=1 where name like “%aaa%”
1
0
分享到:
评论

相关推荐

    mysql的使用心得

    ### MySQL使用心得与技巧 #### 一、MySQL内置函数运用 **1. IP地址与数字之间的转换** - **函数介绍** - `INET_ATON`: 将IP地址转换为整数。 - `INET_NTOA`: 将整数转换为IP地址。 - **应用场景** - 在...

    Mysql使用技巧心得

    ### MySQL使用技巧心得 在日常使用MySQL的过程中,我们经常会遇到各种各样的问题,这些问题往往需要花费大量的时间和精力去解决。本文将分享一些我在使用MySQL时的心得体会和技术要点,希望能够帮助到正在学习或...

    MySQL教程及安装

    - 支持多种存储引擎,如InnoDB、MyISAM等,这些引擎提供了不同的功能和性能特点,可以根据具体的应用场景灵活选择。 - 提供了丰富的SQL功能,包括但不限于事务管理、触发器、视图等高级特性。 - 能够支持跨平台...

    MYSQL初装优化精要

    通过其个人网站和技术博客分享了许多实战案例和技术心得,例如myperf工具的使用介绍等。这些资源对于深入理解MySQL优化具有较高的参考价值。 #### 八、总结 通过对MySQL初装后的综合优化,可以显著提升数据库性能,...

    MYSQL实战45讲(全).zip

    本资源包含45讲完整内容,以及作者关于MySQL的心得体会,是MySQL学习者宝贵的资料库。 一、MySQL基础 MySQL是一个开源的关系型数据库管理系统,广泛应用于Web应用开发,因其高效、稳定和易用而受到青睐。在这一部分...

    mysql-internals.pdf

    - **参与社区讨论**:加入 MySQL 社区,与其他开发者交流心得和经验。 综上所述,通过对 MySQL 内部架构、编码规范及其源代码实现的深入研究,不仅可以帮助我们更好地理解和优化 SQL 查询,还能提升自身的编程技能...

    MySQL性能优化心得1

    1. **MyISAM**: MyISAM是MySQL早期常用的存储引擎,它不支持事务处理,但读取速度较快,占用磁盘空间小。适合于读多写少的场景。然而,由于其非事务性和表级锁定,可能导致并发性能下降。 2. **InnoDB**: InnoDB是...

    mysql 学习总结

    本篇文章将深入探讨MySQL的安装过程、索引的创建及其背后的原理,特别是MyISAM和InnoDB存储引擎的索引结构,以及内存数据库的概念。 首先,让我们来谈谈MySQL的安装。在不同的操作系统上,MySQL的安装方法有所不同...

    mysql-source-read:我阅读mysql源码-mysql

    首先,从标题和描述中我们可以推测,这个项目可能是一个关于个人阅读MySQL源码的心得分享或者教程。通过阅读源码,开发者可以了解到MySQL是如何处理SQL语句的,包括解析、优化、执行等阶段。例如,`sql_yacc.cc`文件...

    mysql的相关学习心得.zip

    13. **InnoDB和MyISAM引擎**:了解这两种最常见的存储引擎的差异,如事务支持、行锁定、全文搜索等,根据实际需求选择合适的引擎。 14. **日志与错误处理**:理解错误日志和慢查询日志的作用,以及如何配置和分析...

    MySQL数据库InnoDB引擎主从复制同步经验总结

    近期将公司的MySQL架构升级了,由原先的一主多从换成了DRBD+Heartbeat双主多从,正好手上有一个电子商务网站新项目也要上线了,用的是DRBD+Heartbeat双主一从,由于此过程还是有别于以前的MyISAM引擎的,所以这里也...

    mysql源代码和相应笔记.zip

    MySQL的源代码主要由C++编写,它包含了许多核心组件,如存储引擎(如InnoDB、MyISAM)、SQL解析器、查询优化器、事务处理机制、索引管理等。通过阅读源代码,我们可以了解到以下知识点: 1. SQL解析:MySQL使用词法...

    MySQL面试题:从基础到进阶全面解析

    9. 经验分享:总结在使用MySQL过程中的心得,如最佳实践、陷阱和避免错误的方法。 10. 兴趣点:阐述对MySQL特定方面的兴趣,如复制、分区或新特性。 通过全面掌握这些知识点,求职者能够在面试中展示出对MySQL的...

    MySql初学者资料合集

    9. **存储引擎**:MySQL支持多种存储引擎,如InnoDB(支持事务处理)、MyISAM(读写速度快但不支持事务)等,理解它们的特性和适用场景。 10. **备份与恢复**:了解如何备份和恢复数据库,以防止数据丢失,这通常...

    韩忠康第二版mysql视频教程笔记

    此外,也会讲解数据库的优化策略,如表分区、存储引擎的选择(如InnoDB和MyISAM)以及查询优化。 安全管理是任何数据库系统的重要组成部分。这可能包括用户权限管理、GRANT和REVOKE语句的使用,以及如何设置访问...

Global site tag (gtag.js) - Google Analytics