【问题标题】:Mysql stopped unexpecteadly on xamppMysql 在 xampp 上意外停止
【发布时间】:2018-12-02 13:30:57
【问题描述】:

我有每张表超过 50K 行的生产软件。它在插入和值检索方面执行缓慢。表已经索引。我的 Ram 是 14GB,配备 Xenon 处理器。

如果我从 my.ini 文件中增加innodb_buffer_poll_size 3G 或更多,那么 mysql 会意外停止。这是什么问题。我现在能做什么?

【问题讨论】:

  • 查看错误日志。服务器不会在没有记录的情况下停止
  • 好的。你能建议我如何加快我的输入和报告显示,大约有 15 个用户使用条形码进行输入。
  • 那么,真正的问题是什么?如何加快查询速度?然后查看慢查询日志,或使用执行计划检查长时间运行的查询。还是您的服务器不时随机崩溃的问题(如您所问)?然后查看日志查找原因
  • 我有一个生产软件。如果行增加 50K 则减慢值插入和值检索。大约有 15 个用户提供输入。至少有 30 个用户连续显示报告。它已安装在 vmware 上。所以我将 innodb_buffer_poll_size 从 16M 增加到 2G。因为有时 mysqld.exe 服务使用率 100% cpu。所以我想增加 innodb_buffer_poll_size。但是如果我将它增加超过 2G 然后弯腰 mysql。我的主要问题是速度问题输入和报告显示。
  • 你有没有尝试过我建议的任何东西,比如慢查询日志、执行计划或错误日志?

标签: php mysql performance xampp innodb


【解决方案1】:

不要使用mysql_*接口!

        SELECT  Line
            FROM  sewing_effi
            WHERE  DT='$dt'
            ORDER BY  Line ASC"

DT 的数据类型是什么? (请提供SHOW CREATE TABLE)

假设DTDATE,那么您需要INDEX(DT, Line) 以提高效率。

为此:

        SELECT  buyer.Buyer,ordr.ordr,ordr.Ship_Date,colour.Colour,sewing_effi.OP,
                sewing_effi.HEL,sewing_effi.Target,sewing_effi.TWH,sewing_effi.Line,
                sid_cutting_inventory.DT,
                SUM(cutting_inventory.qc_pass) AS Input,
                SUM(sewing_output.QC_Pass) AS Toutput, SUM(sewing_output.Recieved) AS Recv
            FROM  cutting_inventory
            INNER JOIN  sid_cutting_inventory
                ON cutting_inventory.SID=sid_cutting_inventory.SID
            LEFT JOIN  buyer  ON cutting_inventory.Buyer=buyer.CBuyer
            LEFT JOIN  ordr  ON cutting_inventory.Buyer=ordr.CBuyer
              AND  cutting_inventory.Ordr=ordr.COrdr
            INNER JOIN  colour  ON cutting_inventory.Buyer=colour.CBuyer
              AND  cutting_inventory.Ordr=colour.COrdr
              AND  cutting_inventory.Colour=colour.CColour
            LEFT JOIN  sewing_output  ON sewing_output.Barcode=cutting_inventory.Barcode
            JOIN  sewing_effi  ON sewing_effi.Line=sid_cutting_inventory.Line
            WHERE  sewing_effi.Line ='$li'
              AND  sewing_effi.DT='$dt'
              AND  ordr.Ship_Status='0'
              AND  sid_cutting_inventory.Challan_Close_SS='0'
              AND  sid_cutting_inventory.DT NOT BETWEEN '2017-01-31  7:00:00'
                                                    AND '2018-03-31 23:00:00'
            GROUP BY  sewing_effi.Line, buyer.Buyer, ordr.ordr,colour.Colour
            ORDER BY  sewing_effi.Line"
                          )

我觉得将LEFT JOININNER JOIN 混合在一起很混乱。请提供EXPLAIN SELECT ...我会做一些猜测。

sewing_effi:  INDEX(Line, DT)  -- in either order
sid_cutting_inventory:  INDEX(Challan_Close_SS, DT) -- in this order

您是否安装了 32 位或 64 位版本的 MySQL?

【讨论】:

    【解决方案2】:

    安装了32位版本的mysql。我附上了一些表格的快照并解释了。我想你会很容易发现我的问题。 Expalincutting_inventory tablesewing_effi tablesewing_output tablesid_cutting_inventory table

    *Challan_Receive_SSD 和 Challan_Close_SSD 列存储日期 *Challan_Receive_SST 和 Challan_Close_SST 列存储时间

    【讨论】:

      猜你喜欢
      • 2019-11-13
      • 2021-07-25
      • 2016-02-15
      • 2021-03-18
      • 2015-06-10
      • 2019-08-12
      相关资源
      最近更新 更多