免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: send_linux
打印 上一主题 下一主题

如何使用InnoDB存储引擎?《MySQL 技术内幕:InnoDB存储引擎》有奖试读名单公布! [复制链接]

论坛徽章:
3
CU大牛徽章
日期:2013-03-13 15:29:07CU大牛徽章
日期:2013-03-13 15:29:49CU大牛徽章
日期:2013-03-13 15:30:19
41 [报告]
发表于 2010-12-02 14:57 |只看该作者
以前现在的服务器硬件只要少有规模的数据量一般都用Innodb了吧,毕竟对于并发插入来说,性能比MyISAM好很多,当然如果很少写入只读MyISAM的性能仍然强悍啊,Innodb在count方面的性能太弱了,许多时候由于需求要在不同表加条件来查count某一数量,速度可想而知,也许你要说设计有问题,呵呵,我的意思是Innodb如果在这一方面能和myisam相比就好了

论坛徽章:
2
午马
日期:2015-01-27 11:22:392015年辞旧岁徽章
日期:2015-03-03 16:54:15
42 [报告]
发表于 2010-12-02 16:32 |只看该作者
InnoDB存储引擎有优点:
1)事务支持:在MYSQL的其它引擎中是不支持事务的。
2)存储过程
3)视图
4)行 ...
renxiao2003 发表于 2010-12-02 14:09



    恩,innodb和其他存储引擎相比,优势就在于高可用性和大数据量的写操作。 在oltp上还是有优势个 哈哈~
    如果查询性的表多的话。。。就不推荐了

论坛徽章:
2
午马
日期:2015-01-27 11:22:392015年辞旧岁徽章
日期:2015-03-03 16:54:15
43 [报告]
发表于 2010-12-02 16:51 |只看该作者
回复 36# starzhestarzhe


    Q1,不是。。。
     
    Q2,
     对于非行业软件企业,或者说终端用户,只要他们在短期内可以应付业务需求和发展需要, 从成本考虑确实没必要做大跨度升级。
   
     但在行业内部,即使如google这样快速变革的企业,当google选择了python,python借势繁荣,google选择限制python,python也一定会有自己的出路。

     当然大企业会讲求总体的稳定,因为产品的快速变革会让客户有不安全感,而产品线的停滞会让客户失去忠诚度,做商业产品不是写latex,多少年如一日的稳定,
是要养活一群人的,今年卖一个产品,明年还得继续升级继续卖。
      至于开发工具、脚本,框架或者说一些看上去不是跟终端客户关系很大的软件,我觉得更新的幅度也不会变慢。IBM对DOS的失误养活了MS,
而IBM对于RDBMS的轻视则造就了ORCL,一定会有人去寻找别人没有关注的领域去得到发展,这也会推动整个行业的发展哈哈
      从cvs到git, 也是在变新啊,就像mysql会选择innodb或者bdb myisam做engine,也是更新嘛~以前痛苦地看着rh9的gnome界面,后来不也有了compiz也有很多更新选择了哈哈
~~有信心O

论坛徽章:
0
44 [报告]
发表于 2010-12-02 17:37 |只看该作者
支持楼主,qlks v5.

论坛徽章:
0
45 [报告]
发表于 2010-12-02 18:21 |只看该作者
Innodb引擎在数据的安全性支持上无疑是比myisam更良好的。包括它的外键,引用,事务,等等。

论坛徽章:
8
综合交流区版块每周发帖之星
日期:2015-12-02 15:03:53数据库技术版块每日发帖之星
日期:2015-10-02 06:20:00IT运维版块每日发帖之星
日期:2015-10-02 06:20:00IT运维版块每日发帖之星
日期:2015-09-14 06:20:00金牛座
日期:2014-10-10 11:23:34CU十二周年纪念徽章
日期:2013-10-24 15:41:34酉鸡
日期:2013-10-19 10:17:1315-16赛季CBA联赛之北京
日期:2017-03-06 15:12:44
46 [报告]
发表于 2010-12-02 19:28 |只看该作者
InnoDB存储引擎当前存在的缺点有哪些
1.InnoDB不支持FULLTEXT类型的索引。
2.InnoDB 中不保存表的具体行数 ...
renxiao2003 发表于 2010-12-02 14:10



    我关注online ddl和多线程ms的复制上面的的改进多谢,还有partition

论坛徽章:
0
47 [报告]
发表于 2010-12-02 20:57 |只看该作者
恩,活动很好,正好用学习这方面的知识

论坛徽章:
0
48 [报告]
发表于 2010-12-03 10:05 |只看该作者
如果我主从复制环境 主库用InnoDB,从库用myisam 那是不是个好的选择呢?

论坛徽章:
59
2015七夕节徽章
日期:2015-08-24 11:17:25ChinaUnix专家徽章
日期:2015-07-20 09:19:30每周论坛发贴之星
日期:2015-07-20 09:19:42ChinaUnix元老
日期:2015-07-20 11:04:38荣誉版主
日期:2015-07-20 11:05:19巳蛇
日期:2015-07-20 11:05:26CU十二周年纪念徽章
日期:2015-07-20 11:05:27IT运维版块每日发帖之星
日期:2015-07-20 11:05:34操作系统版块每日发帖之星
日期:2015-07-20 11:05:36程序设计版块每日发帖之星
日期:2015-07-20 11:05:40数据库技术版块每日发帖之星
日期:2015-07-20 11:05:432015年辞旧岁徽章
日期:2015-07-20 11:05:44
49 [报告]
发表于 2010-12-03 14:29 |只看该作者
InnoDB是事务性的。如果在应用中需求有回滚等操作,必须使用这个。
但问题是:如果要进行事务处理,为什么不选用免费的PG,或者收费的ORACLE,SQL Server等。
不知道其它的数据库是不是也有N多引擎。

论坛徽章:
59
2015七夕节徽章
日期:2015-08-24 11:17:25ChinaUnix专家徽章
日期:2015-07-20 09:19:30每周论坛发贴之星
日期:2015-07-20 09:19:42ChinaUnix元老
日期:2015-07-20 11:04:38荣誉版主
日期:2015-07-20 11:05:19巳蛇
日期:2015-07-20 11:05:26CU十二周年纪念徽章
日期:2015-07-20 11:05:27IT运维版块每日发帖之星
日期:2015-07-20 11:05:34操作系统版块每日发帖之星
日期:2015-07-20 11:05:36程序设计版块每日发帖之星
日期:2015-07-20 11:05:40数据库技术版块每日发帖之星
日期:2015-07-20 11:05:432015年辞旧岁徽章
日期:2015-07-20 11:05:44
50 [报告]
发表于 2010-12-03 14:38 |只看该作者
从官方文档可看出InnoDB存储引擎的不足之处有:
一个表不能包含超过1000列。
·
内部最大键长度是3500字节,但MySQL自己限制这个到1024字节。
·
除了VARCHAR, BLOB和TEXT列,最大行长度稍微小于数据库页的一半。即,最大行长度大约8000字节。LONGBLOB和LONGTEXT列必须小于4GB, 总的行长度,页包括BLOB和TEXT列,必须小于4GB。InnoDB在行中存储VARCHAR,BLOB或TEXT列的前768字节,余下的存储的分散的页面中。
·
虽然InnoDB内部地支持行尺寸大于65535,你不能定义一个包含VARCHAR列的,合并尺寸大于65535的行。 ·
mysql> CREATE TABLE t (a VARCHAR(8000), b VARCHAR(10000),·

-> c VARCHAR(10000), d VARCHAR(10000), e VARCHAR(10000),·

-> f VARCHAR(10000), g VARCHAR(10000));·
ERROR 1118 (42000): Row size too large. The maximum row size for the·
used table type, not counting BLOBs, is 65535. You have to change some·
columns to TEXT or BLOBs
·
在一些更老的操作系统上,数据文件必须小于2GB。
·
InnoDB日志文件的合并尺寸必须小于4GB。
·
最小的表空间尺寸是10MB。最大的表空间尺寸是4,000,000,000个数据库页(64TB)。这也是一个表的最大尺寸。
·
InnoDB表不支持FULLTEXT索引。
·
ANALYZE TABLE 通过对每个索引树做八次随机深入并相应地更新索引集估值,这样来计数集。注意,因为这是仅有的估值,反复运行ANALYZE TABLE会产生不同数。这使得 ANALYZE TABLE 在 InnoDB 表上很快,不是百分百准确,因为它没有考虑所有的行。
MySQL 不仅在汇合优化中使用索引集估值。如果一些汇合没有以正确的方式优化,你可以试一下 ANALYZE TABLE 。很少有情况,ANALYZE TABLE 没有产生对你特定的表足够好的值,你可以使用 FORCE INDEX 在你查询中来强制使用特定索引,或者设置 max_seeks_for_key 来确保MySQL在表扫描之上运行索引查找。请参阅5.3.3节,“服务器系统变量”。请参阅A.6节,“优化器相关的问题”
·
在Windows上,InnoDB总是内部地用小写字母存储数据库和表名字。要把数据库以二进制形式从Unix 移到Windows,或者从Windows移到Unix,你应该让所有数据库和表的名字都是小写。
·
警告: 不要在MySQL数据库内的把MySQL系统表从MyISAM转为InnoDB表!这是一个不被支持的操作。如果你这么做了,MySQL直到你从备份恢复旧系统表,或用mysql_install_db脚本重建系统表才重启动。
·
InnoDB在表内不保留行的内部计数。(因为多版本化,这可能确实有些复杂)。要处理一个SELECT COUNT(*) FROM t语句,InnoDB必须扫描表的一个索引,如果这个索引不在缓冲池中,扫描需要花一些时间。要获得快速计数,你不得不使用一个自己创建的计数器表,并让你的应用按照它做的插入和删除来更新它。如果你的表格不经常改变,使用MySQL查询缓存时一个好的解决方案。如果大致的行数就足够了,则SHOW TABLE STATUS也可被使用。请参阅15.2.11节,“InnoDB性能调节提示”
·
对于AUTO_INCREMENT列,你必须总是为表定义一个索引,并且索引必须包含AUTO_INCREMENT列。在MyISAM表中,AUTO_INCREMENT列可能时多列索引的一部分。
·
当你重启MySQL服务器之时,InnoDB可能为一个AUTO_INCREMENT列重使用一个旧值(即,一个被赋给一个老的已回滚的事务的值)。
·
当一个AUTO_INCREMENT列用完值,InnoDB限制一个BIGINT到-9223372036854775808以及BIGINT UNSIGNED到1。尽管如此,BIGINT值有由64位,所以注意到,如果你要一秒输入100万个行,在BIGINT到达它上限之前,可能还需要将近30万年。用所有其它整数类型列,产生一个重复键错误。这类似于MyISAM如何工作的,因为它主要是一般MySQL行为,并不特别关于任何存储引擎。
·
DELETE FROM tbl_name不重新生成表,但取而代之地删除所有行,一个接一个地删除。
·
TRUNCATE tbl_name为InnoDB而被映射到DELETE FROM tbl_name 并且不重置AUTO_INCREMENT计数器。
·
SHOW TABLE STATUS不能给出关于InnoDB表准确的统计数据,除了被表保留的物理尺寸。行计数仅是在SQL优化中粗略的估计。
·
在MySQL 5.1中,如果innodb_table_locks=1(1是默认值) MySQL LOCK TABLES操作在每一个表上获取两个锁定。除了在MySQL层的表锁定,它也获得一个InnoDB表锁定。旧版的MySQL不获取InnoDB表锁定,旧行为可以通过设置innodb_table_locks=0 来选择。如果没有InnoDB表锁定被获得,即使表的一些记录被其它事务锁定,LOCK TABLES完成。  
·
所有被一个事务持有的InnoDB锁定在该事务被提交或中止之时被释放。因此在AUTOCOMMIT=1模式,在InnoDB表上调用是没有太多意义的,因为被需求的InnoDB表锁定可能会被立即释放。
·
有时,在事务的过程中锁定更多的表可能是有用的。不幸地,MySQL中的LOCK TABLES执行一个暗地的COMMIT和UNLOCK TABLES。LOCK TABLES的一个InnoDB变量已经被计划, 该计划在事务的中间被执行。
·
为建立复制从服务器的LOAD TABLE FROM MASTER语句对InnoDB表不起作用。一个工作区在主服务器上更换表为MyISAM的,然后做负载,之后更换主服务器表回到InnoDB中。
·
在InnoDB中默认数据库页的大小是16KB。通过编译代码,你可以在8KB到64KB之间来设置这个值。你不得不更新在univ.i源文件中的UNIV_PAGE_SIZE和UNIV_PAGE_SIZE_SHIFT的值。
·
在MySQL 5.1中,触发器不被级联的外键行为激活。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP