首页 文章

MySQL在C中运行缓慢

提问于
浏览
1

我们有MySQL数据库 . 我们正在尝试使用C代码中的ODBC驱动程序连接到此MySQL数据库 . 我们使用的ODBC驱动程序是3.51版 .

数据库结构如下:我们在数据库D1中有一个对话表CONV_X1,它包含客户端和服务器机器的IP地址以及与此对话相对应的数据,格式如下:

ProtocolID ServerID ClientID TimeStamp InOctets OutOctets

24  167772161  167772162  1310121900         0  1.741e+006 
    632  167772161  167772162  1310121900         0  1.741e+006 
     24  167772161  167772162  1310122800         0    1.8e+006

我们在另一个数据库D2中有另一个表PROT_NAME,它包含此协议ID的信息 . 我们将数据库D1中的CONV_X1表中的ProtocolID映射到数据库D2中的PROT_NAME表以获取协议名称 .

从information_schema中可以看到表名CONV_X1,因为在D1中可以有多个具有不同ID的相同名称的表(例如.CONV_X1,CONV_X2等)

我们正在以这种格式从这个数据库中提取数据

ServerID:ClientID_ProtocolName_InOctets_tableName
ClientID:ServerID_ProtocolName_InOctets_tableName

因此,对于1310121900时间戳,我们正在操作的数据采用以下格式

10.0.0.1:10.0.0.2_ftp_InOctets_CONV_X1 data is 0
10.0.0.2:10.0.0.1_ftp_InOctets_CONV_X1 data is 1.741e+006

10.0.0.1:10.0.0.2_udp_InOctets_CONV_X1 data is 0
10.0.0.2:10.0.0.1_udp_InOctets_CONV_X1 data is 1.741e+006

我们使用以下查询来实现结果

select distinct concat(inet_ntoa(np.serverid), ':',inet_ntoa(np.clientid),'_inoctets_',rp.name,'_',c.table_name)HostCounter1, concat(inet_ntoa(np.clientid),':',inet_ntoa(np.serverid),'_inoctets_',rp.name,'_',c.table_name)HostCounter2, np.inoctets value1 ,np.outoctets value2, from_unixtime(timestamp) from information_schema.`COLUMNS` c,D1.CONV_X1 np,D2.PROT_NAME rp where c.table_schema='D1' AND c.table_name ='CONV_X1' AND np.protocolid=rp.id AND np.timestamp between unix_timestamp('2011-08-31 10:33:14') AND unix_timestamp('2011-08-31 11:33:14') order by timestamp;

这将以下列格式提供输出:

HostCounter1 HostCounter2 value1 value2 from_unixtime(timestamp)
10.0.0.1:10.0.0.2_ftp_InOctets_CONV_X1 10.0.0.2:10.0.0.1_ftp_InOctets_CONV_X1 0 1.741e+006 1310121900(in unix format)
10.0.0.1:10.0.0.2_udp_InOctets_CONV_X1 10.0.0.2:10.0.0.1_udp_InOctets_CONV_X1 0 1.741e+006

我们的C代码使用SQL调用SQLDriverConnect(),SQLExecDirect()执行此操作,这些调用花费大量时间连接到数据库并执行此查询 . 因此,我们的C代码面临性能问题 . 请告诉我们有没有办法解决性能问题 . ODBC驱动程序的更改是否可以帮助我们?我们可以优化查询吗?如果是这样的话?

1 回答

  • 0

    尝试查看查询计划并确保您具有适当的索引 .

相关问题