`
san_yun
  • 浏览: 2653692 次
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

mysql innodb,MyISAM 两种引擎测试

 
阅读更多

准备工作:

 

CREATE TABLE `test` (
   `id` int(11) NOT NULL,  
   `name` varchar(1000) NOT NULL
   ) ENGINE=MyISAM  DEFAULT CHARSET=utf8;  

 

delimiter |

 

 

create procedure p_test()
begin
 
  declare max int default 100000;
  declare i int default 1;

  while i<max do
    insert into test values(1,'helloworldfucksd');
    set i=i+1;
   end while;

end |

 

执行 call p_test(),报错了:

ERROR 1436 (HY000): Thread stack overrun:  6656 bytes used of a 131072 byte stack, and 128000 bytes needed.  Use 'mysqld --thread_stack=#' to specify a bigger stack.

错误原因是 thread_stack太小,默认的128K,建议调整到192K

 

测试结果


   MyISAM:

 

mysql> call p_test();
Query OK, 1 row affected (1.97 sec)

mysql> commit;
Query OK, 0 rows affected (0.00 sec)

mysql> truncate table test;
Query OK, 0 rows affected (0.00 sec)

mysql> commit;
Query OK, 0 rows affected (0.00 sec)

mysql> optimize table test;
+-------------+----------+----------+-----------------------------+
| Table | Op | Msg_type | Msg_text |
+-------------+----------+----------+-----------------------------+
| python.test | optimize | status | Table is already up to date |
+-------------+----------+----------+-----------------------------+
1 row in set (0.00 sec)
 

InnoDB

 

首先切换到InnoDB,

ALTER TABLE test  ENGINE = InnoDB

sho tables status:

mysql> show table status \G
*************************** 1. row ***************************
           Name: test
         Engine: InnoDB
        Version: 10
     Row_format: Compact
           Rows: 20375
 Avg_row_length: 77
    Data_length: 1589248
Max_data_length: 0
   Index_length: 0
      Data_free: 6291456
 Auto_increment: NULL
    Create_time: 2012-05-09 18:34:27
    Update_time: NULL
     Check_time: NULL
      Collation: utf8_general_ci
       Checksum: NULL
 Create_options: 
        Comment: 
1 row in set (0.00 sec)
 

 

测试了下,非常慢,10分钟左右才2W行:

yunpeng@yunpeng-duitang:/duitang/dist/conf/mysql$ vmstat 1
procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa
 1  1     16 2073808 114884 1740028    0    0    18   122   86   45  7 13 79  1
 1  1     16 2073248 115068 1740500    0    0     0   368 3282 3067  4 13 59 24
 1  1     16 2072624 115276 1740620    0    0     0   420 3006 3110  4 15 58 23
 0  1     16 2073076 115428 1740384    0    0     0  4400 3070 3250  4 15 57 25
 1  1     16 2072732 115572 1740232    0    0     0   508 2973 3048  3 15 58 23
 0  1     16 2073132 115780 1740184    0    0     0   460 3819 4080  4 15 58 24
 1  1     16 2072240 115956 1740644    0    0     0   352 3340 3220  5 13 59 23
 1  1     16 2072272 116140 1740648    0    0     0   372 3584 3105  3 14 59 24
 0  1     16 2072136 116332 1740424    0    0     0   388 3310 3120  3 14 60 23
 0  1     16 2071928 116508 1740496    0    0     0   524 3566 3224  4 14 58 24
 1  1     16 2071620 116708 1740912    0    0     0   404 3777 4114  5 13 60 22
 1  1     16 2071512 116900 1740632    0    0     0   428 3335 3268  3 15 58 24
 1  1     16 2071200 117068 1740656    0    0     0   336 3038 3190  3 14 59 24
 1  1     16 2071668 117276 1740204    0    0     0   420 3633 3308  3 13 60 24
 2  1     16 2071420 117436 1740220    0    0     0  4792 4610 3681  3 14 62 21

 

InnoDB,关闭autocommit

 

set autocommit=0; 

select @@autocommit;   //查看一下autocommit的设置  

 

mysql> call p_test();
Query OK, 1 row affected (2.54 sec)

mysql> select count(*) from test;
+----------+
| count(*) |
+----------+
|    99999 |
+----------+
1 row in set (0.05 sec)

mysql> commit;
Query OK, 0 rows affected (0.04 sec)
 

 

分享到:
评论

相关推荐

    MyISAM引擎与InnoDB引擎性能的对比

    在实际应用中,开发者还可以通过调整数据库参数,如缓冲池大小、索引缓存等,进一步优化这两种引擎的性能。 总的来说,MyISAM和InnoDB引擎各有优劣,选择哪种引擎取决于你的应用场景和性能需求。如果你的工作负载...

    MySQL内核:InnoDB存储引擎 卷1.pdf.zip

    《MySQL内核:InnoDB存储引擎 卷1》是一本深度探讨MySQL数据库系统核心部分——InnoDB存储引擎的专业书籍。这本书以超高清的PDF格式呈现,包含详细的书签,便于读者快速定位和查阅相关内容。InnoDB作为MySQL中最常用...

    mysql DB引擎myisam与innodB

    在 MySQL 数据库系统中,存在多种不同的存储引擎,其中最为人所熟知且广泛使用的两种是 MyISAM 和 InnoDB。这两种存储引擎各自具有独特的特点和适用场景。 #### InnoDB:事务安全与外键支持 InnoDB 是 MySQL 中...

    《MYSQL备份与恢复》之 Innodb与 MyISAM引擎

    (1)xtrabackup只能备份InnoDB和XtraDB两种数据表,而不能备份MyISAM数据表 (2)innobackupex是参考了InnoDB Hotbackup的innoback脚本修改而来的,innobackupex是一个perl脚本封装,封装了xtrabackup,所以能...

    MySQL Innodb 索引原理详解

    尽管本篇主要讨论InnoDB存储引擎,但仍值得简要提及InnoDB与之前的默认存储引擎MyISAM之间的区别: - **事务处理**:InnoDB支持事务处理,而MyISAM不支持。 - **行级锁定**:InnoDB支持行级锁定,提高了并发性能。 ...

    MySQL存储引擎之争-InnoDB与MyISAM全面对决

    本文主要讨论的是InnoDB和MyISAM这两个引擎的对决,两者在事务处理、数据恢复、并发控制、存储空间占用以及读取性能等方面都有显著差异。 首先,InnoDB存储引擎支持事务处理,这使得它适用于那些需要确保数据完整性...

    mysql数据据存储引擎InnoDB和MyISAM的优势及区别分享.pdf

    MySQL 数据存储引擎 InnoDB 和 MyISAM 是 MySQL 中最常用的两个表类型,每种类型都有其优缺点,本文将详细介绍 InnoDB 和 MyISAM 的特点、优缺点和应用场景。 MyISAM MyISAM 是 MySQL 的默认存储引擎,它基于传统...

    8.MySQL存储引擎--MyISAM与InnoDB区别1

    MyISAM和InnoDB是MySQL中最常用的两种存储引擎,它们都有其优缺点,本文将对比MyISAM和InnoDB存储引擎的区别。 FULLTEXT索引 MyISAM支持FULLTEXT索引,而InnoDB不支持。FULLTEXT索引可以对文本字段进行索引,以提高...

    mysql更改引擎(InnoDB,MyISAM)的方法

    这两种引擎各有特点,选择哪种引擎取决于应用的需求。InnoDB是MySQL的默认存储引擎(自MySQL 5.5.5版本起),它支持事务处理、行级锁定以及外键约束,适合于需要数据完整性和并发性能较高的应用场景。而MyISAM则以其...

    简单了解mysql InnoDB MyISAM相关区别

    这两种引擎各有特点,适用于不同的场景。本文将深入探讨它们的区别。 首先,MyISAM是MySQL的默认存储引擎,尤其是在旧版本中。它的一个特性是跨操作系统兼容性,意味着MyISAM表可以在Windows和Linux等不同操作系统...

    MySQL innodb 技术内幕

    MySQL 提供了多种存储引擎,包括 InnoDB、MyISAM、NDB、MEMORY、Archive、Federated 等。每种存储引擎都有其特点和优缺点。 ### 1.3.1 InnoDB 存储引擎 InnoDB 存储引擎是 MySQL 的默认存储引擎,它支持外键、...

    Innodb与Myisam引擎的区别与应用场景

    下面将详细探讨这两种引擎的主要区别及其在不同场景下的应用。 #### 一、InnoDB与MyISAM的关键区别 1. **事务处理** - **MyISAM**:不支持事务处理,这意味着在进行一系列操作时,如果其中一个操作失败,则不会...

    MyISAM和InnoDB的异同

    MyISAM和InnoDB是MySQL中最常用的两种存储引擎,它们各自拥有不同的特点和适用场景。 #### MyISAM引擎概述 MyISAM是MySQL早期默认使用的存储引擎,它主要适用于读取密集型的应用场景。MyISAM支持表级锁定,这意味...

    MySQL InnoDB和MyISAM数据引擎的差别分析

    MySQL中的InnoDB和MyISAM是两种非常重要的存储引擎,它们各自有着独特的特性和适用场景。在选择使用哪种引擎时,需要根据实际的应用需求来决定。 InnoDB是MySQL的默认存储引擎,它提供了ACID(原子性、一致性、隔离...

    mysql 中InnoDB和MyISAM的区别分析小结

    下面我们将深入探讨这两种引擎的主要区别。 首先,InnoDB是MySQL的默认存储引擎,它支持事务处理,这意味着用户可以执行诸如INSERT、UPDATE、DELETE等操作,并通过COMMIT或ROLLBACK确保数据的一致性。此外,InnoDB...

    深入探讨:MySQL数据库MyISAM与InnoDB存储引擎的比较

    这里介绍关于这两种引擎的一些基本概念(非深入介绍)。MyISAM是MySQL的默认存储引擎,基于传统的ISAM类型,支持全文搜索,但不是事务安全的,而且不支持外键。每张MyISAM表存放在三个文件中:frm 文件存放表格定义...

    MyISAM InnoDB 区别

     两种类型最主要的差别就是Innodb 支持事务处理与外键和行级锁.而MyISAM不支持.所以MyISAM往往就容易被人认为只适合在小项目中使用。  我作为使用MySQL的用户角度出发,Innodb和MyISAM都是比较喜欢的,但是从我...

    MyISAM,InnoDB存储引擎1

    其中,MyISAM和InnoDB是最常用的两种存储引擎,各有其特点和适用场景。 MyISAM存储引擎是MySQL早期的默认引擎,以高速存储和检索以及全文搜索能力著称。在MyISAM中,每个表由三个物理文件组成:.frm存储表定义,....

Global site tag (gtag.js) - Google Analytics