MYSQL 5.6中禁用INNODB引擎

快乐无极 , 2013/05/24 22:07 , 数据库 » MySQL , 评论(0) , 阅读(17021) , Via 本站原创
并不是所有人都需要INNODB引擎,虽然它弥补了MYSQL缺乏事务支持的毛病,但是它的磁盘性能一直是让人比较担忧的。
另外比较老的PHP系统,大多是采用MYISAM引擎在MYSQL建表,似乎INNODB根本用不上场,这时候可以考虑将INNODB禁掉。
在MYSQL 5.6中,直接skip-innodb前面的注释后,在my.ini中要设置一下:
default-storage-engine=MYISAM
default-tmp-storage-engine=MYISAM
上面橙色字是必须要加的一行,否则MYSQL启动不了!一启动便会自动关闭。
另外MYSQL 5.6 比 5.5占用了更多的物理内存,虚拟内存跟5.5使用差不多(5.5也是一个虚拟内存消耗大户)。性能上比5.5提升了30%左右(根据官方文档,没作具体测试)。

补充:不仅如此,还必须在 [mysqld] 中添加以下配置。否则如果查询到这些状态中的某一个时会发生#2006错误,导致MYSQL直接退出!!!错误截图如:
点击在新窗口中浏览此图片
(参见:http://docs.oracle.com/cd/E17952_01/refman-5.6-en/innodb-turning-off.html
引用
loose-innodb-trx=0
loose-innodb-locks=0
loose-innodb-lock-waits=0
loose-innodb-cmp=0
loose-innodb-cmp-per-index=0
loose-innodb-cmp-per-index-reset=0
loose-innodb-cmp-reset=0
loose-innodb-cmpmem=0
loose-innodb-cmpmem-reset=0
loose-innodb-buffer-page=0
loose-innodb-buffer-page-lru=0
loose-innodb-buffer-pool-stats=0
loose-innodb-metrics=0
loose-innodb-ft-default-stopword=0
loose-innodb-ft-inserted=0
loose-innodb-ft-deleted=0
loose-innodb-ft-being-deleted=0
loose-innodb-ft-config=0
loose-innodb-ft-index-cache=0
loose-innodb-ft-index-table=0
loose-innodb-sys-tables=0
loose-innodb-sys-tablestats=0
loose-innodb-sys-indexes=0
loose-innodb-sys-columns=0
loose-innodb-sys-fields=0
loose-innodb-sys-foreign=0
loose-innodb-sys-foreign-cols=0
Tags: ,

mariaDB 介绍及安装使用

快乐无极 , 2013/05/21 22:24 , 数据库 » MySQL , 评论(0) , 阅读(17236) , Via 本站原创
mariaDB主页:https://mariadb.org/
MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可。开发这个分支的原因之一是:Oracle公司收购了MySQL后,有将MySQL闭源的潜在风险,因此社区采用分支的方式来避开这个风险。
mariaDB现在最新的版本是10.0.2-alpha,可以用于替代Mysql 5.6。
mariaDB 与Mysql 的安装使用几乎没有任何差别,甚至它安装的服务名都叫MySQL。它与MySQL是高度兼容的,完全可以移植MySql的数据备份过来使用,没有任何问题。
安装包里自带了一个非常棒的MYSQL/mariaDB 管理工具——HeidiSQL。
MariaDB好在哪里?
一个理由是MariaDB能比MySQL提供更高的性能,另一个原因就是对Oracle统治MySQL的厌恶,开源软件的精神在MariaDB上显现得更明显。当然有技术人员表示现在让大家全面剥离MySQL投奔MariaDB,最大的难点在于部分MySQL组件无法被替代,尚需时日。
Tags: ,
在Windows下安装MySQL ,用了官方的配置向导生成了my.ini,本以为很安稳了,谁知十多个小时过去之后,系统响应非常慢,看资源管理器的性能卡,发现句柄数竟然达到了10万!怪不得无论使用什么程序都卡得很。
网上搜索一下,大概是说 innodb_buffer_pool_size 这个默认的8M太大,但我已经skip-innodb了啊。
后来又看到一个设置innodb_flush_log_at_trx_commit

innodb_flush_log_at_trx_commit  (这个很管用)
抱怨Innodb比MyISAM慢 100倍?那么你大概是忘了调整这个值。默认值1的意思是每一次事务提交或事务外的指令都需要把日志写入(flush)硬盘,这是很费时的。特别是使用电池供电缓存(Battery backed up cache)时。设成2对于很多运用,特别是从MyISAM表转过来的是可以的,它的意思是不写入硬盘而是写入系统缓存。日志仍然会每秒flush到硬盘,所以你一般不会丢失超过1-2秒的更新。设成0会更快一点,但安全方面比较差,即使MySQL挂了也可能会丢失事务的数据。而值2只会在整个操作系统挂了时才可能丢数据。

后来设置成了innodb_flush_log_at_trx_commit = 2。
重启MYSQL服务,的确好了许多,句柄数最终保持在2万左右,处于稳定状态,其它程序快了许多。
看来在配置文件中innodb即使skip掉了,也仍然在使用系统中的内存、磁盘IO,看来对于MYSQL的配置还是要手工研究,不能完全依赖于自带的配置工具。
Tags: , ,
在搭建springmvc框架时,底层使用hibernate4.1.8,数据库使用mysql5.1,使用hibernate自动生成数据库表时,hibernate方言使用org.hibernate.dialect.MySQLInnoDBDialect,自动生成表时会出现
引用
[13-04-13 19:11:37.190] {resin-60} You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'type=InnoDB' at line 8

后来,网上查找一番,发现是因为type=InnoDB在5.0以前是可以使用的,但5.1之后就不行了。如果我们把type=InnoDB改为engine=InnoDB就不会有这个问题。但是,我想使用Hibernate,自动帮我建表,怎么办呢。这就与我们指定的数据库方言(dialect)有关了。
只需要修改配置:
hibernate.dialect=org.hibernate.dialect.MySQLInnoDBDialect
修改为:
hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect
Tags: , , ,
MySQL有时候忘记了root密码是一件伤感的事。这里提供Windows 和 Linux 下的密码重置方法。
Tags: , ,
分页: 1/1 第一页 1 最后页 [ 显示模式: 摘要 | 列表 ]