Время ожидания ожидания ожидания ожидания превышено в MySQL amazon rds

У меня есть одна процедура хранения, которая выполняет операцию сохранения в одной таблице. В этой процедуре хранилища я вставляю несколько записей в таблицу.

вот моя структура таблицы

Table : InviteMst
~~~~~~~~~~~~~~~~~

Name      DataType      Description
--------  ------------  ----------------------
InviteID  Int           PrimaryKey (Auto Incr)
Date      Date  
UserID    Int           (ForignKey)
EMailID   varchar(50)
Guid      varchar(36) 

store procedure : usp_InviteMst
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

CREATE PROCEDURE `usp_InviteMst`( IN n_UserID INT, IN EmailList MEDIUMTEXT )
BEGIN
    DECLARE d_Date DATETIME DEFAULT NOW();
    IF LENGTH(EmailList) > 0 THEN
           SET @sqlQuery = "";
       SET nPos = INSTR(EmailList, ",");    
           WHILE (nPos <>  0) DO
          SET c_EmailID = TRIM(SUBSTRING(EmailList, 1,nPos - 1));
              IF c_EmailID <> "" THEN
                  SET c_Guid = "";

              //Here I am checking that If User already exists with same emailid in   same date or note.   
          SELECT Guid INTO c_Guid
          FROM InviteMst 
          WHERE UserID = n_UserID 
          AND Date = DATE(d_Date)
          AND Guid IS NOT NULL 
          AND EMailID = c_EmailID
          ORDER BY Date DESC
          LIMIT 0, 1;

          SET c_Guid = COALESCEc_Guid ,"");
          IF (c_Guid = "") THEN
             SET c_Guid = UUID();       

                 //Here I am preparing statement/query for insert
                 SET @sqlQuery = CONCAT(@sqlQuery, IF(LENGTH(@sqlQuery) > 0,",",""),  "(", n_UserID, ", '", d_Date, "','", c_EmailID, "', c_GuID, "') ");
          END IF;
          END IF;

          SET EmailList = SUBSTRING(EmailList, nPos +1, LENGTH(EmailList));
          SET nPos = INSTR(EmailList, ",");
       END WHILE;

       IF (LENGTH(@sqlQuery) > 0) THEN  
          //Finally here I am inserting in table 
          SET @sqlQuery = CONCAT("INSERT INTO InviteMst ( UserID, Date, EmailID, Guid ) VALUES ", @sqlQuery);
          PREPARE stmt FROM @sqlQuery;
          EXECUTE stmt;
      SET @sqlQuery = "";

       END IF;
    END IF;     
END

Я вызываю эту процедуру хранения следующим образом:

call usp_InviteMst( 1, '[email protected],[email protected],[email protected],[email protected]' );

Он работает отлично, в случаях, но некоторое время (в моем живом проекте) это ошибка погрешности "Время ожидания ожидания блокировки превышено". мой "innodb_lock_wait_timeout" установлен на 100.

Если есть лучший способ сделать это. или как я могу вставлять многоуровневые записи в один запрос.

Я использую node.js, и сейчас я использую транзакцию.