如何减少mysql cpu的使用情况在下面的例子中

时间:2013-05-21 09:38:14

标签: php mysql performance cpu-usage

我正在创建广告系列跟踪网站。这有100张桌子。我正在为每个月创建一个新表,用于使用CREATE TABLE IF NOT EXISTS记录我的搜索和点击次数(该表包含23个字段和9个索引。)。我的客户抱怨这个查询他们告诉它占用了很多CPU。它在每个请求上运行。但是如果它不存在,我就创建了这个表,即每月一次。这会增加CPU使用率吗?如果是,在这种情况下有没有办法减少CPU使用率?

编辑1

CREATE TABLE IF NOT EXISTS click_log_201305 (
                      hit_id int(10) unsigned NOT NULL auto_increment,
                      link_id int(11) NOT NULL default '0',
                      word varchar(225) NOT NULL default '',
                      ppc_engine varchar(40) NOT NULL default 'internal',
                      ppc_commission varchar(10) default NULL,
                      gross_price decimal(5,3) NOT NULL default '0.000',
                      price decimal(5,3) NOT NULL default '0.000',
                      hit_date int(11) NOT NULL default '0',
                      hit_time int(11) NOT NULL default '0',
                      affiliate varchar(50) NOT NULL default '',
                      account varchar(50) NOT NULL default '',
                      commission varchar(10) default NULL,
                      paid_flag char(3) default NULL,
                      roi_code int(11) NOT NULL default '0',
                      roi_sale int(11) default NULL,
                      debug_info varchar(100) default NULL,
                      ip varchar(15) default NULL,
                      referer varchar(200) default NULL,
                      user_agent varchar(200) default NULL,
                                          subid varchar(50) default NULL,
                                          ad_id INT(11) default NULL,
                                          group_id INT(11) default NULL,
                                          country varchar(100) default NULL,
                      PRIMARY KEY (hit_id),
                      KEY jhcl_date(hit_date),
                      KEY jhcl_src(hit_date,ppc_engine),
                      KEY jhcl_id(hit_date,link_id),
                      KEY jhcl_acct(hit_date,account),
                      KEY jhcl_aff(hit_date,affiliate),
                      KEY jhcl_word(hit_date,word),
                                          KEY jhcl_camp_id(link_id),
                                          KEY jhcl_group_id(group_id),
                                          KEY jhcl_ad_id(ad_id)
                    )

1 个答案:

答案 0 :(得分:0)

CREATE TABLE IF NOT EXISTS放置到cron作业/计划任务,并在每天00.00运行它。然后查询将每天只运行一次。当您创建一个新表时,将其添加到单独的表(例如 table_list ),您可以在其中保留您创建的表的列表。

然后首先检查table_list以检查是否已创建当月的表。如果您无法在“ table_list ”中找到该表,则可以创建新表。