首页
学习
活动
专区
圈层
工具
发布

mysql性能
EN

Stack Overflow用户
提问于 2009-10-20 11:19:27
回答 2查看 257关注 0票数 2

我正在测试MySQL作为SQL server的替代品,我遇到了一些非常奇怪的事情。我同时测试了插入和读取,并且以这两种方式每秒最多执行大约50个查询。

我的测试表如下所示:

代码语言:javascript
复制
DROP TABLE IF EXISTS `webanalytics`.`test`;
CREATE TABLE  `webanalytics`.`test` (
    `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
    `name` varchar(45) NOT NULL,
    PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1001 DEFAULT CHARSET=utf8;

我的C#测试程序看起来像这样:

代码语言:javascript
复制
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using MySql.Data.MySqlClient;
using System.Diagnostics;

namespace ConsoleApplication1
{
    class Program
    {
        const int QUERY_COUNT = 1000;
        const string CONNECTION_STRING = "server=localhost;database=WebAnalytics;uid=root;pwd=root";

        static void Main(string[] args)
        {
            using (var db = new MySqlConnection(CONNECTION_STRING))
            {
                db.Open();
                using (var cmd = db.CreateCommand())
                {
                    cmd.CommandText = "insert into Test(Name) values (?Name);";
                    cmd.Parameters.AddWithValue("?Name", "");

                    var timer = new Stopwatch();
                    timer.Start();

                    for (var i = 0; i < QUERY_COUNT; i++)
                    {
                        cmd.Parameters["?Name"].Value = "Test" + i;
                        cmd.ExecuteNonQuery();
                    }

                    timer.Stop();
                    var rate = QUERY_COUNT / (timer.ElapsedMilliseconds / 1000);
                    Console.WriteLine("Query rate: {0}/s", rate);
                }
            }
        }
    }

}

看起来像是一个相当简单的测试用例。在用于MySQL的安装中,我使用默认的OLTP标准服务器设置运行32位,但我必须将innodb的缓冲池从2G调低到1G。我不知道瓶颈在哪里。MySQL数据连接器有问题吗?点跟踪配置文件会话显示以下内容:

alt text http://img18.imageshack.us/img18/6812/performance.png

我不知道MySQL连接器的内部细节,但是对mysqldatareader.nextresult的调用让我感到困惑。为什么当我执行插入操作时它会读取?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-10-20 03:24:03

您正在使用InnoDB表。因此,您应该非常小心地注意可能决定MySQL数据库性能的众多设置。MySQLPerformanceBlog在InnoDB optimization上有几个非常好的articles,你应该读一读。

票数 6
EN

Stack Overflow用户

发布于 2009-10-20 17:30:07

如果你想取代SQL Server,我希望你不要使用CTE或者其他有用的MySQL没有的特性...

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1592274

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档