When do i need to DEALLOCATE a prepared statement in a MySQL stored procedure?
[https://dev.mysql.com/doc/refman/8.0/en/sql-prepared-statements.html] says: 


  A prepared statement is specific to the session in which it was
  created. If you terminate a session without deallocating a previously
  prepared statement, the server deallocates it automatically.
  
  A prepared statement is also global to the session. If you create a
  prepared statement within a stored routine, it is not deallocated when
  the stored routine ends.
  
  To guard against too many prepared statements being created
  simultaneously, set the max_prepared_stmt_count system variable. To
  prevent the use of prepared statements, set the value to 0.


I would note run DEALLOCATE unless I have a large number of prepared statements close to the maximum (by default 16382 in MySQL 8.0).