如何测试mysql的性能和稳定性
1:服务器环境
操作系统:Red Hat Enterprise Linux Server release 5.5 (Tikanga)
CPU:Intel(R) Xeon(R) CPU E5607 @ 2.27GHz 8核
内存:16G
Mysql:Ver 14.14 Distrib 5.5.21, for Linux (x86_64)
Oracle:Oracle Database 11g Enterprise Edition Release
详细数据测试(操作通过存储过程完成)
数据插入
50并发Mysql插入性能图示(横坐标:当前数据总量,纵坐标:每秒执行次数){平均值:4841.98}
50并发Oracle插入性能图示(横坐标:执行时间(秒),纵坐标:每秒执行次数){平均值:1459.408}
我理解的是你希望了解mysql性能测试的方法: 其实常用的一般: 选取最适用的字段属性 MySQL可以很好的支持大数据量的存取,但是一般说来,数据库中的表越小,在它上面执行的查询也就会越快。因此,在创建表的时候,为了获得更好的性能,我们可以将表中字段的宽度设得尽可能小。例如,在定义邮政编码这个字段时,如果将其设置为CHAR(255),显然给数据库增加了不必要的空间,甚至使用VARCHAR这种类型也是多余的,因为CHAR(6)就可以很好的完成任务了。同样的,如果可以的话,我们应该使用MEDIUMINT而不是BIGIN来定义整型字段。 另外一个提高效率的方法是在可能的情况下,应该尽量把字段设置为NOT NULL,这样在将来执行查询的时候,数据库不用去比较NULL值。 对于某些文本字段,例如“省份”或者“性别”,我们可以将它们定义为ENUM类型。因为在MySQL中,ENUM类型被当作数值型数据来处理,而数值型数据被处理起来的速度要比文本类型快得多。这样,我们又可以提高数据库的性能。 2、使用连接(JOIN)来代替子查询(Sub-Queries) MySQL从4.1开始支持SQL的子查询。这个技术可以使用SELECT语句来创建一个单列的查询结果,然后把这个结果作为过滤条件用在另一个查询中。例如,我们要将客户基本信息表中没有任何订单的客户删除掉,就可以利用子查询先从销售信息表中将所有发出订单的客户ID取出来,然后将结果传递给主查询,如下所示: DELETE FROM customerinfo WHERE CustomerID NOT in (SELECT CustomerID FROM salesinfo ) 使用子查询可以一次性的完成很多逻辑上需要多个步骤才能完成的SQL操作,同时也可以避免事务或者表锁死,并且写起来也很容易。但是,有些情况下,子查询可以被更有效率的连接(JOIN).. 替代。例如,假设我们要将所有没有订单记录的用户取出来,可以用下面这个查询完成: SELECT * FROM customerinfo WHERE CustomerID NOT in (SELECT CustomerID FROM salesinfo ) 如果使用连接(JOIN).. 来完成这个查询工作,速度将会快很多。尤其是当salesinfo表中对CustomerID建有索引的话,性能将会更好,查询如下: SELECT * FROM customerinfo LEFT JOIN salesinfoON customerinfo.CustomerID=salesinfo. CustomerID WHERE salesinfo.CustomerID IS NULL 连接(JOIN).. 之所以更有效率一些,是因为 MySQL不需要在内存中创建临时表来完成这个逻辑上的需要两个步骤的查询工作。 3、使用联合(UNION)来代替手动创建的临时表 MySQL 从 4.0 的版本开始支持 UNION 查询,它可以把需要使用临时表的两条或更多的 SELECT 查询合并的一个查询中。在客户端的查询会话结束的时候,临时表会被自动删除,从而保证数据库整齐、高效。使用 UNION 来创建查询的时候,我们只需要用 UNION作为关键字把多个 SELECT 语句连接起来就可以了,要注意的是所有 SELECT 语句中的字段数目要想同。下面的例子就演示了一个使用 UNION的查询。 SELECT Name, Phone FROM client UNION SELECT Name, BirthDate FROM author UNION SELECT Name, Supplier FROM product 4、事务 尽管我们可以使用子查询(Sub-Queries)、连接(JOIN)和联合(UNION)来创建各种各样的查询,但不是所有的数据库操作都可以只用一条或少数几条SQL语句就可以完成的。更多的时候是需要用到一系列的语句来完成某种工作。但是在这种情况下,当这个语句块中的某一条语句运行出错的时候,整个语句块的操作就会变得不确定起来。设想一下,要把某个数据同时插入两个相关联的表中,
有一些有用的工具可以测试MySQL 和基于MySQL 的系统的性能。这里将演示如何利用这些工具进行测试。mysqlslap
mysqlslap可以模拟服务器的负载,并输出计时信息。它包含在MySQL 5.1 的发行包中,应该在MySQL 4.1或者更新的版本中都可以使用。测试时可以执行并发连接数,并指定SQL 语句(可以在命令行上执行,也可以把SQL 语句写入到参数文件中)。如果没有指定SQL 语句,mysqlslap 会自动生成查询schema 的SELECT 语句。
MySQL Benchmark Suite (sql-bench)
在MySQL 的发行包中也提供了一款自己的基准测试套件,可以用于在不同数据库服务器上进行比较测试。它是单线程的,主要用于测试服务器执行查询的速度。结果会显示哪种类型的操作在服务器上执行得更快。
这个测试套件的主要好处是包含了大量预定义的测试,容易使用,所以可以很轻松地用于比较不同存储引擎或者不同配置的性能测试。其也可以用于高层次测试,比较两个服务器的总体性能。当然也可以只执行预定义测试的子集(例如只测试UPDATE 的性能)。这些测试大部分是CPU 密集型的,但也有些短时间的测试需要大量的磁盘I/O 操作。
这个套件的最大缺点主要有:它是单用户模式的,测试的数据集很小且用户无法使用指定的数据,并且同一个测试多次运行的结果可能会相差很大。因为是单线程且串行执行的,所以无法测试多CPU 的能力,只能用于比较单CPU 服务器的性能差别。使用这个套件测试数据库服务器还需要Perl 和BDB 的支持,相关文档请参考.
Super Smack
Super Smack是一款用于MySQL 和PostgreSQL的基准测试工具,可以提供压力测试和负载生成。这是一个复杂而强大的工具,可以模拟多用户访问,可以加载测试数据到数据库,并支持使用随机数据填充测试表。测试定义在"smack"文件中,smack 文件使用一种简单的语法定义测试的客户端、表、查询等测试要素。
Database Test Suite
Database Test Suite 是由开源软件开发实验室(OSDL,Open Source DevelopmentLabs)设计的,发布在SourceForge 网站上,这是一款类似某些工业标准测试的测试工具集,例如由事务处理性能委员会(TPC,Transaction Processing Performance Council)制定的各种标准。特别值得一提的是,其中的dbt2 就是一款免费的TPC-C OLTP 测试工具(未认证)。之前本书作者经常使用该工具,不过现在已经使用自己研发的专用于MySQL 的测试工具替代了。
Percona's TPCC-MySQL Tool
我们开发了一个类似TPC-C 的基准测试工具集,其中有部分是专门为MySQL 测试开发的。在评估大压力下MySQL 的一些行为时,我们经常会利用这个工具进行测试(简单的测试,一般会采用sysbench 替代),在源码库中有一个简单的文档说明。
sysbench
sysbench是一款多线程系统压测工具。它可以根据影响数据库服务器性能的各种因素来评估系统的性能。例如,可以用来测试文件I/O、操作系统调度器、内存分配和传输速度、POSIX 线程,以及数据库服务器等。sysbench 支持Lua 脚本语言,Lua 对于各种测试场景的设置可以非常灵活。sysbench 是我们非常喜欢的一种全能测试工具,支持MySQL、操作系统和硬件的硬件测试。(节选自《高性能MySQL》)
如何测试MySQL的系统的性能
mysqlslap可以模拟服务器的负载,并输出计时信息。它包含在MySQL 5.1 的发行包中,应该在MySQL 4.1或者更新的版本中都可以使用。测试时可以执行并发连接数,并指定SQL 语句(可以在命令行上执行,也可以把SQL 语句写入到参数文件中)。如果没有指定SQL 语句,mysqlslap 会自动生成查询schema 的SELECT 语...
几个常用的MySQL性能测试工具
--query 使用自定义脚本执行测试,例如可以调用自定义的一个存储过程或者sql语句来执行测试。--only-print 如果只想打印看看SQL语句是什么,可以用这个选项。mysqlslap -umysql -p123 --concurrency=100 --iterations=1 --auto-generate-sql --auto-generate-sql-add-autoincrement --auto-generate-sql...
如何测试mysql是否安装成功
1、打开命令行窗口。2、然后我们点击输入Root密码,并按回车。3、这时沃恩看到显示MySQL输入标记 4、输入显示所有数据库命令:show databases; 一定要有分号,并按回车。5、显示系统默认的4个数据库,则说明MySQL数据库安装成功。
mysql内存表的测试,每隔10秒对数据库中的表进行一次更新,看内存表的最...
使用JUnit,使用一个压力测试小程序.每隔10秒对数据库表进行一次更新,然后缩短时间,增加更新记录数,直到数据库崩溃为至
如何安装并测试MySQL
1)、在DOS窗口下,进入d:\/mysql\/bin目录 2)、win9X下)运行:mysqld在NT下运行:mysqld-nt --standalone 3)、此后,mysql在后台运行 4)、测试mysql:(在d:\/mysql\/bin目录下)a)、mysqlshow 正常时显示已有的两个数据库mysql和test b)、mysqlshow -u root mysql 正常时显示数据库mysql里的五个表...
如何测试mysql的最大连接数
通常,mysql的最大连接数默认是100, 最大可以达到16384。 1、查看最大连接数: show variables like '%max_connections%'; 2、修改最大连接数 方法一:修改配置文件。推荐方法一 进入MySQL安装目录 打开MySQL配置文件 my.ini 或 my.cnf查找 max_c ...
请问,怎样测试mysql的配置是否成功??
可以尝试一下把它变为最大比如max_allowed_packet=160M测试,如果还是报这个错误信息“GOT a packet bigger than max_allowed_packet,说明没配置成功,如果不报了说明配置成功了。再改回16M。 这样的建议可否?突然想起来了 可以使用 show variables like"% 这里面添加要查的字段%",可以查询数据库配置...
我想知道:mysql这个软件是否在我的电脑上正确安装,如何测试~~
if (!mysql_query("CREATE DATABASE newdata",$id)){ echo "数据库创建不成功,请检查账号权限和数据库是否已经存在!";exit; \/\/如果数据库创建不成功,退出程序执行 } echo "数据库创建成功!";if (!mysql_select_db("newdata",$id)){ echo "数据库选择不成功!";exit; \/\/如果数...
mysql主从热备中怎么测试数据同步的延时时间
MySQL数据库性能诊断与调优,本文介绍了如何使用seconds_behind_master和mk-heartbeat 检查MySQL数据库主从延时的问题,我们要保证复制的整体结构是否正
如何使用MySQL自带的性能压力测试工具mysqlslap
--query=name,-q 使用自定义脚本执行测试,例如可以调用自定义的一个存储过程或者sql语句来执行测试。--create-schema 代表自定义的测试库名称,测试的schema,MySQL中schema也就是database。--commint=N 多少条DML后提交一次。--compress, -C 如果服务器和客户端支持都压缩,则压缩信息传递。--...
定瑗卫萌: 我理解的是你希望了解mysql性能测试的方法: 其实常用的一般: 选取最适用的字段属性MySQL可以很好的支持大数据量的存取,但是一般说来,数据库中的表越小,在它上面执行的查询也就会越快.因此,在创建表的时候,为了获得更好的...
梨树区19810109199: 如何评估和测试Mysql及oracle数据库性能 - ?
定瑗卫萌: 1:服务器环境 操作系统:Red Hat Enterprise Linux Server release 5.5 (Tikanga) CPU:Intel(R) Xeon(R) CPU E5607 @ 2.27GHz 8核 内存:16G Mysql:Ver 14.14 Distrib 5.5.21, for Linux (x86_64) Oracle:Oracle Database 11g Enterprise Edition ...
梨树区19810109199: 如何评估和测试Mysql及oracle数据库性能?
定瑗卫萌: 首先 数据库的性能有很多种 1:速度性能 2:并发性能 3:事务性能 在速度性能上,首先你需要首先确定你的测试环境. 举个例子,比如你的软件可能的用户群是一群使用586电脑的客户,那么肯定是mysql的效率要高出oracle.这个是为什么呢...
梨树区19810109199: 如何查看mysql数据库的性能 - ?
定瑗卫萌: 如何提高MySQL Limit查询的性能? 在MySQL数据库操作中,我们在做一些查询的时候总希望能避免数据库引擎做全表扫描,因为全表扫描时间长,而且其中大部分扫描对客户端而言是没有意义的.其实我们可以使用Limit关键字来避免全表扫...
梨树区19810109199: 如何使用MySQL自带的性能压力测试工具mysqlslap - ?
定瑗卫萌: 方法/步骤使用--auto-generate-sql参数表示用mysqlslap工具自己生成的SQL脚本来测试并发压力 mysqlslap --auto-generate-sql -uroot -p123456并发测试,使用–concurrency来模拟并发连接,连接数可以多个,用逗号隔开 mysqlslap --auto-...
梨树区19810109199: 如何做SQL Server性能测试 - ?
定瑗卫萌: 对于DBA来讲,我们都会做新服务器的性能测试.我会从TPC的基准测试入手,使用HammerDB做整体性能评估(前身是HammerOra),跟厂商数据对比.再使用DiskSpd针对性的测试磁盘IO性能指标(前身是SQLIO),再到SQLIOSIM测试存...
梨树区19810109199: 如何测试sqlserver性能 - ?
定瑗卫萌: 1、打开sql server studio management 2、打开"工具"-"sql server profiler" 3、点击连接 4、点击运行 5、可以看到捕捉到的一些访问数据库的事件,其中有读写,点用cpu,持续时间等信息可以参考 6、点击某个事件,可以查看具体执行了什么sql脚本,进一步分析相关逻辑
梨树区19810109199: 如何查看 mysql 性能瓶颈 - ?
定瑗卫萌: 通过sysbench的oltp_read_write测试来模拟业务压力、以此来给指定的硬件环境配置一份比较合理的MySQL配置文件. 环境介绍 硬件配置 请点击输入图片描述 软件环境请点击输入图片描述 优化层级与指导思想 优化层级 MySQL数据库优化...
梨树区19810109199: 如何安装并测试MySQL - ?
定瑗卫萌: 在Windows环境下构筑和调试MySQL数据库是许多网站研发者的一种最好选择.本人在Windows98环境下初学MySQL,现将学习过程和经验总结出来供大家参考.1、下载mysql-3.23.35-win.zip并解压;2、运行setup.exe;选择d:mysql,"...
梨树区19810109199: 如何使用LoadRunner来监控MySql数据库的性能 - ?
定瑗卫萌: 首先录制脚本,设计好场景;然后在设置场景的页面中有RUN面板,面板里有Available Graphs 在里面选择Datebase Server Resource Graphs,再选择 SQL Server(双击),这时候sqlserver的面板就会出现在可是monitors里,然后选中面板右键,选择Add Measurements->进入后点击 Add 输入你数据库服务器的信息,进行连接;连接成功后,需要选择相应的计数器,关注你们的计数器…