符合中小企业对网站设计、功能常规化式的企业展示型网站建设
本套餐主要针对企业品牌型网站、中高端设计、前端互动体验...
商城网站建设因基本功能的需求不同费用上面也有很大的差别...
手机微信网站开发、微信官网、微信商城网站...
这篇文章主要介绍“MySQL对于unique_checks的支持”,在日常操作中,相信很多人在mysql对于unique_checks的支持问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”mysql对于unique_checks的支持”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
创新互联是一家集网站建设,沛县企业网站建设,沛县品牌网站建设,网站定制,沛县网站建设报价,网络营销,网络优化,沛县网站推广为一体的创新建站企业,帮助传统企业提升企业形象加强企业竞争力。可充分满足这一群体相比中小企业更为丰富、高端、多元的互联网需求。同时我们时刻保持专业、时尚、前沿,时刻以成就客户成长自我,坚持不断学习、思考、沉淀、净化自己,让我们为更多的企业打造出实用型网站。
unique_checks 这个参数是用于检查主键和唯一键是否重复的参数.
tokudb与innodb对于这个参数有很大区别.
开启(unique_checks=1 or on)时没什么区别..都是要需要检查唯一性.
关闭(unique_checks=0 or off)时,就有区别了
在unique_checks关闭状态,不管什么引擎,有两个情况下,性能提升还是客观的:
1.只有primary key且是auto-increment的和secondary index ,没有unique index,这个时候关闭unique_checks,批量插入的性能还是有很乐观的提升的.
2.primary key有大量随机数据(就是离散值很大),或者unique index有大量随机数据(离散值很大),批量插入的性能也会有很高的提升;
接下来说说innodb与tokudb的区别:
innodb:off只是关闭secondary indexs.其实这句话有点多余.只要不是unique index,检不检查其实效果差别不大.官方宣称,关闭unique_checks可以提升批量insert性能.secondary indexs.仔细研究了下.在批量插入时,不管secondary index如何进行组织或更新(插入数据后,索引也会更新或者可能重新组织),primary key和unique index都需要更新或重新组织.所以在innodb下,这个参数的性能提升意义不是很大.
tokudb:off状态就不一样了.在off状态下,只检查primary key是否重复.目前tokudb的索引还在研究阶段,所以就只参考官方手册的说法:在off状态下,将提升批量insert的效率(前提是不仅有primary,还得有其他索引,不然,效果就不明显了).
在关闭unique_checks状态下,除了primary不能重复外,unique index和其他索引是可以重复的.这算是超级bug了.都允许重复了,还unique?而且在primary相同,unique不一样的两条insert,后面一条会覆盖前面一条的数据,这个就太坑了...如下例:
mysql> show create table t3\G
*************************** 1. row ***************************
Table: t3
Create Table: CREATE TABLE `t3` (
`id` int(11) NOT NULL,
`id2` int(11) DEFAULT NULL,
`d3` int(11) DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `d3` (`d3`),
KEY `sec_key` (`id2`)
) ENGINE=TokuDB DEFAULT CHARSET=utf8
1 row in set (0.00 sec)
mysql>
mysql>
mysql> select * from t3;
+----+------+------+
| id | id2 | d3 |
+----+------+------+
| 1 | NULL | NULL |
| 2 | 2 | NULL |
| 3 | 3 | 3 |
| 4 | 4 | 3 |
+----+------+------+
4 rows in set (0.00 sec)
mysql>
mysql>
mysql> insert into t3 values (2,1,1);
Query OK, 1 row affected (0.14 sec)
mysql> select * from t3;
+----+------+------+
| id | id2 | d3 |
+----+------+------+
| 1 | NULL | NULL |
| 2 | 1 | 1 |
| 3 | 3 | 3 |
| 4 | 4 | 3 |
+----+------+------+
4 rows in set (0.00 sec)
有此可知,关闭unique_checks也是存在隐患的.如果大量primary重复,前面的数据都会被覆盖(只保留最后一个重复的数据),且secondary index很容易会遭到破坏,这个时候可能就需要重建索引,由此的代价,反而性能损失更大.
到此,关于“mysql对于unique_checks的支持”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注创新互联网站,小编会继续努力为大家带来更多实用的文章!