`
k_lb
  • 浏览: 800547 次
  • 性别: Icon_minigender_1
  • 来自: 郑州
社区版块
存档分类
最新评论
  • kitleer: 据我所知,国内有款ETL调度监控工具TaskCTL,支持ket ...
    kettle调度

MYSQL TABLE TYPE

 
阅读更多

python使用 mysql for python时 发现数据无法插入,结果是因为table type的问题 innodb 时无法插入,改为myisam正常,可能是因为innodb格式需要另外一种调用方式吧,有待研究。

不像MyISAM 存储引擎,每个表只是一个文件.(这样在某些系统下最大2G限制). 而Innodb
没有此限制,可以无限扩展.
Mysql4.0 的以后版本都支持innodb 存储.

MySQL有几种表格类型可供选择,每一种类型都有一些各具优缺点的功能。这些类型分别是ISAM、MyISAM、HEAP、MERGE、BDB和InnoDB。选择类型时要依据许多因素。这些因素包括性能、事务、列锁定和崩溃恢复,当然还不只这些。然而,对该示例应用程序来说,关键的功能是事务和参照完整约束。

只有InnoDB表格类型能满足条件。至少有两种方法可以指定一个InnoDB表格类型。一是用--default-table-type=InnoDB来启动MySQL数据库服务器。这样创建的表格是InnoDB类型。(注意:如果没有指定InnoDB 为默认的表类型,那么默认的表类型则为MyISAM)。另一种方法是在创建表格脚本的数据库描述语言(DDL)中详尽指明表格的类型。(www.mysql.com/doc/en/Table_types.html上提供更多的关于MySQL表格类型的信息)。


■非事务安全型
ISAM
ISAM是一个定义明确且历经时间考验的数据表格管理方法,它在设计之时就考虑到数据库被查询的次数要远大于更新的次数。因此,ISAM执行读取操作的速度很快,而且不占用大量的内存和存储资源。ISAM的两个主要不足之处在于,它不支持事务处理,也不能够容错:如果你的硬盘崩溃了,那么数据文件就无法恢复了。如果你正在把ISAM用在关键任务应用程序里,那就必须经常备份你所有的实时数据,通过其复制特性,MySQL能够支持这样的备份应用程序。

MyISAM


MyISAM是MySQL的ISAM扩展格式和缺省的数据库引擎。除了提供ISAM里所没有的索引和字段管理的大量功能,MyISAM还使用一种表格锁定的机制,来优化多个并发的读写操作。其代价是你需要经常运行OPTIMIZE TABLE命令,来恢复被更新机制所浪费的空间。MyISAM还有一些有用的扩展,例如用来修复数据库文件的MyISAMChk工具和用来恢复浪费空间的MyISAMPack工具。

MyISAM强调了快速读取操作,这可能就是为什么MySQL受到了Web开发如此青睐的主要原因:在Web开发中你所进行的大量数据操作都是读取操作。所以,大多数虚拟主机提供商和Internet平台提供商(Internet Presence Provider,IPP)只允许使用MyISAM格式。

HEAP
HEAP允许只驻留在内存里的临时表格。驻留在内存里让HEAP要比ISAM和MyISAM都快,但是它所管理的数据是不稳定的,而且如果在关机之前没有进行保存,那么所有的数据都会丢失。在数据行被删除的时候,HEAP也不会浪费大量的空间。HEAP表格在你需要使用SELECT表达式来选择和操控数据的时候非常有用。要记住,在用完表格之后就删除表格。让我再重复一遍:在你用完表格之后,不要忘记删除表格。

用CREATE TEMPORARY TABLE 所创建的临时表相比,HEAP 表是其他客户机可见的。HEAP 表有几个限制,这些限制对MyISAM 或ISAM 表没有,如下所示:

■ 索引仅用于“=”和“< = >”比较。

■ 索引列中不能有NULL 值。

■ 不能使用BLOB 和TEXT 列。

■不能使用AUTO_INCREMENT 列。

MERGE

MERGE是一种值得关注的新式表类型,在3.23.25版中提供。MERGE表实际上由一组同样的MyISAM表合并而成。之所以要把多个同样的表合并成一个,主要是出于性能上的考虑,因为它能够提高搜索速度、提高修复效率、节省磁盘空间。 

■事务安全型 
InnoDB和Berkley DB
InnoDB和Berkley DB(BDB)数据库引擎都是造就MySQL灵活性的技术的直接产品,这项技术就是MySQL++ API。在使用MySQL的时候,你所面对的每一个挑战几乎都源于ISAM和MyISAM数据库引擎不支持事务处理也不支持外来键。尽管要比ISAM和MyISAM引擎慢很多,但是InnoDB和BDB包括了对事务处理和外来键的支持,这两点都是前其他引擎所没有的。如前所述,如果你的设计需要这些特性中的一者或者两者,那你就要被迫使用后两个引擎中的一个了。

可以肯定的是,MyISAM的确,但是如果你的逻辑设计需要事务处理,你就可以自由使用支持事务处理的引擎。进一步讲,由于MySQL能够允许你在表格这一层应用数据库引擎,所以你可以只对需要事务处理的表格来进行性能优化,而把不需要事务处理的表格交给更加轻便的MyISAM引擎


分享到:
评论

相关推荐

    Mysql 报Row size too large 65535 的原因及解决方法

    The maximum row size for the used table type, not counting BLOBs, is 65535 向mysql的表插件一个字段 类型为text时,或修改一个字段类型为text时,报出上面的错误。其实我对这个错误的原因理解也不是很深,给...

    2021年MySQL高级教程视频.rar

    14.MySQL高级优化SQL步骤explain之tabletype.avi 15.MySQL高级优化SQL步骤explain之keyrowsextra.avi 16.MySQL高级优化SQL步骤showprofile.avi 17.MySQL高级优化SQL步骤trace工具.avi 18. .....

    浅析mysql迁移到clickhouse的5种方法

    create table engin mysql CREATE TABLE [IF NOT EXISTS] [db.]table_name [ON CLUSTER cluster] ( name1 [type1] [DEFAULT|MATERIALIZED|ALIAS expr1] [TTL expr1], name2 [type2] [DEFAULT|MATERIALIZED|ALIAS ...

    mysql高级视频教程百度云(2019).txt

    23.MySQL高级_explain之select_type和table介绍.avi 22.MySQL高级_explain之id介绍.avi 21.MySQL高级_explain使用简介.avi 20.MySQL高级_性能分析前提知识.avi 19.MySQL高级_哪些情况不适合建索引.avi 18...

    尚硅谷Java视频教程_MySQL高级视频

    尚硅谷_MySQL高级_explain之select_type和table介绍 · 24.尚硅谷_MySQL高级_explain之type介绍 · 25.尚硅谷_MySQL高级_explain之possible_keys和key介绍 · 26.尚硅谷_MySQL高级_explain之key_len介绍 · 27....

    MySQL中的alter table命令的基本使用方法及提速优化

    alter table tbl_name add col_name type 例如, 给pet的表增加一列 weight, mysql&gt;alter table pet add weight int; 2. 删除列 alter table tbl_name drop col_name 例如, 删除pet表中的weight这一列 mysql&gt;...

    Devart dbForge Studio for MySQL Professional Edition v7.1.13

    dbForge Studio also provides utilities to compare, synchronize, and backup MySQL databases with scheduling, and gives possibility to analyze and report table data. Over 15,000 users rely on dbForge ...

    MySQL优化表时提示 Table is already up to date的解决方法

    Table Op Msg_type Msg_text commentmeta optimize status OK comments optimize status OK term_taxonomy optimize status OK usermeta optimize status OK users optimize status OK 其实不需要有疑问和担心的,从...

    sql-parser:解析 mysql create table 语句,用于通过建表语句生成 model 代码文件

    解析 mysql create table 语句,用于通过建表语句生成 model 代码文件。 yarn install yarn dev 或 npm i npm run dev // 构建支持浏览器环境的代码文件,浏览器端直接引用构建出来的 browser/sql-parser.min.js ...

    MySQL and JSON A Practical Programming Guide 2018

    Step 2: Create the Table Step 3: Load the Data Using a Wrapper Step 4: Double-Check the Data jq: JSON CLI Parser With No Arguments Select Certain Fields The Restaurant Collection 11 The MySQL Document...

    mysql-8.0.20-macos10.15-x86_64.tar.gz

    Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Database changed mysql&gt; select user,host from user; +----------------...

    JSP+MYSQL网上商城

    -- Table structure for table `movies` -- CREATE TABLE movies ( MovieID bigint(20) NOT NULL auto_increment, Name varchar(200) default NULL, Sort varchar(50) default NULL, Lang varchar(50) default ...

    mysql-connector-java-commercial-5.1.30-bin.jar

    Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE); String sql="select * from first"; ResultSet rs=stmt.executeQuery(sql); while(rs.next()) {%&gt; 您的第...

    mysql参数及其优化

    query_cache_size、query_cache_type、innodb_buffer_pool_size、innodb_log_file_size、innodb_log_buffer_size、innodb_flush_logs_at_trx_commit、transaction_isolation、innodb_file_per_table、innodb_open_...

    PHP+Mysql简单新闻管理系统(自己写的)

    Target Server Type : MYSQL Target Server Version : 50553 File Encoding : 65001 Date: 2018-06-03 10:35:20 */ SET FOREIGN_KEY_CHECKS=0; -- ---------------------------- -- Table structure for news -- ...

    springboot+html+mysql音乐管理系统

    Source Server Type : MySQL Source Server Version : 50562 Source Host : localhost:3306 Source Schema : music Target Server Type : MySQL Target Server Version : 50562 File Encoding : 65001 */ ...

    [php]mysql数据库操作——DB类

    header('Content-Type:text/html; charset=utf-8'); basename($_SERVER['PHP_SELF'])=='mysql.inc.php'&&header; ('Location:http://'.$_SERVER['HTTP_HOST']); //禁止直接访问本页 /** ※※※※※※※※※※※※※...

    oracle数据库学习笔记总结

    二、常用SQL: ... SQL Server的: IF EXISTS (SELECT name FROM sysobjects WHERE name = '表名' AND type = 'U') DROP TABLE 表名; Oracle的: create or replace table 表名 ...; -- 直接写建表语句

Global site tag (gtag.js) - Google Analytics