第七章 mysql测试经验共享1.0.0.2.docVIP

  1. 1、本文档共14页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Mysql测试 FAQ. Mysql测试 FAQ 1 1. 测试时候操作 1 1.1 innodb的表空间 1 1.2 max_allowed_packet选项 1 1.3 无法获取更新sql影响的记录条数 2 1.4 触发器坏的时候 2 1.5 自增列的问题 2 1.6 打开数据库的log文件进行测试 2 1.7 mysql导出转义字符 3 2. 建立同步相关 3 2.1 my.cnf需要主库的同步信息 3 2.2 主从之间必须用不同的server-id 3 2.3 必须配置log-bin 3 2.4 配置项log-slave-updates 3 2.5 四升五必须考var包 4 2.6 主从同步中忽略掉指定的表 4 2.7 只同步指定的表 5 Mysql性能的一般结论 5 3. 更新sql的性能 5 3.1 更新类型sql的最大速度 5 3.2 影响更新sql执行时间的主要因素 5 3.3 比较短的更新sql 6 3.4 比较大的更新sq 6 4. 关于mysql检索性能测试 7 4.1 索引不止一倍提高检索速度 7 4.2 使用in比单条更快 7 4.3 比较符号比limit的效率高 7 5. 各种数据类型的处理 9 5.1 数据类型的转换规则 9 5.2 在mysql中慎用引号 10 5.3 BIGINT不是INT 11 5.4 text列 12 5.5 汉字处理 13 测试时候操作 innodb的表空间 Q:在测试执行的时候,经常需要环境迁移,拷贝数据库var文件夹,该文件夹下面的ibdata1文件总是很大,可以压缩删除ibdata1文件吗? A:ibdata1文件不能够压缩和删除。线上的mysql5数据库多使用innodb的存储引擎,在innodb的存储引起中,数据库中数据信息的存储在名字叫做ibdata1的文件中,文件名称和属性由my.cnf中配置项innodb_data_file_path指定。测试环境中tc183上面原有的sfrd镜像线上的数据库,由于存在着触发器和触发表,而触发表中的数据有上亿条,导致ibdata1已经增大到了319G,即使drop掉增量数据库,表空间文件ibdata1的大小没有任何变化,仍然是319G。 经验总结:因为ibdata文件是只增大不缩小的,所以要减小表硬盘空间的大小,必须使用如下步骤: (1)使用mysqldump转储所有InnoDB表; (2)停止服务器; (3)删除所有已存在的表空间文件; (4)配置新表空间; (5)重启服务器; (6)导入转储文件。 这是MySQL官方的步骤,因为占用的空间已经分配给MySQL 了,跟Oracle类似的,在修改和删除的时候mysql为了下次能够继续复用这些空间避免重新申请空间代理的效率上的损失,仍然占用着这些硬盘空间,而不进行释放,下次有需要。 线上的ibdata1不会出现这么大的情况,因为线上会定期删除sfrd增量数据库里面的数据,这样留出磁盘空间可以给其他的数据用,所以线上的磁盘空间也会随着时间而有少许的增长。 max_allowed_packet选项 Q:为什么sql里面执行一个很大的sql,会出现ror导致执行失败的情况? A:[client] [mysqld] 中有一个选项max_allowed_packet,max_allowed_packet参数的作用是用来控制其通信缓冲区的最大长度,表示能够接受到的包含sql语句的event包的最大大小,当sql语句过大的时候而这个配置项的数值过小,则可能导致出现下面错误:bigger than max_allowed_packet 无法获取更新sql影响的记录条数 Q:对于更新sql,使用mysql –e”$sql”的方法,有没有办法知道这条sql作用到的具体的记录的条目数,比如delete from table_23_alltype where caseid = 1这个sql就无法知道caseid=1的sql是否存在,除非sql本身错误,否则不知道该条sql一共删除了几条caseid=1的记录? A:使用交互模式登陆到mysql服务器时候,执行一条sql,mysql会返回影响的条数,例如 update table_int set caseid=1; Query OK, 0 rows affected (0.00 sec) Rows matched: 1 Changed: 0 Warnings: 0 但是非交互模式也就是-e的方式执行,却不会直接返回sql所影响到的记录数。 在进行测试的时候,有时候我们需要执行的sql是否真的和底层数据match上,为了解决这个问题,可以利用mysql的c的API函数mysql_affected_rows(MYSQL *)来执行。所以我们编写ex

文档评论(0)

xiaofei2001128 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档