diff --git a/mysql-test/r/partition_MDEV-11084.result b/mysql-test/r/partition_MDEV-11084.result
new file mode 100644
index 00000000000..e23d19acb17
--- /dev/null
+++ b/mysql-test/r/partition_MDEV-11084.result
@@ -0,0 +1,52 @@
+#
+# testing MDEV-11084
+#
+CREATE TABLE t1 (a int PRIMARY KEY)
+ENGINE = InnoDB
+PARTITION BY HASH (a) PARTITIONS 1000;
+INSERT INTO t1 VALUES (0), (1), (2), (3);
+FLUSH STATUS;
+SELECT a FROM t1 PARTITION(p0) WHERE a = 0;
+a
+0
+SHOW SESSION STATUS
+WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VALUE > 0;
+Variable_name	Value
+Handler_close	999
+Handler_commit	1
+Handler_external_lock	4
+Handler_read_key	2
+SELECT a FROM t1 WHERE a = 0;
+a
+0
+SHOW SESSION STATUS
+WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VALUE > 0;
+Variable_name	Value
+Handler_close	1000
+Handler_commit	2
+Handler_external_lock	2006
+Handler_open	999
+Handler_read_key	4
+SELECT a FROM t1 PARTITION(p0) WHERE a = 0;
+a
+0
+SHOW SESSION STATUS
+WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VALUE > 0;
+Variable_name	Value
+Handler_close	2000
+Handler_commit	3
+Handler_external_lock	2010
+Handler_open	999
+Handler_read_key	6
+SELECT a FROM t1 WHERE a = 0;
+a
+0
+SHOW SESSION STATUS
+WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VALUE > 0;
+Variable_name	Value
+Handler_close	2001
+Handler_commit	4
+Handler_external_lock	4012
+Handler_open	1998
+Handler_read_key	8
+DROP TABLE t1;
diff --git a/mysql-test/t/partition_MDEV-11084.test b/mysql-test/t/partition_MDEV-11084.test
new file mode 100644
index 00000000000..ad9ecec738e
--- /dev/null
+++ b/mysql-test/t/partition_MDEV-11084.test
@@ -0,0 +1,29 @@
+--source include/have_innodb.inc
+--source include/have_partition.inc
+
+--echo #
+--echo # testing MDEV-11084
+--echo #
+CREATE TABLE t1 (a int PRIMARY KEY)
+ENGINE = InnoDB
+PARTITION BY HASH (a) PARTITIONS 1000;
+INSERT INTO t1 VALUES (0), (1), (2), (3);
+FLUSH STATUS;
+--sorted_result
+SELECT a FROM t1 PARTITION(p0) WHERE a = 0;
+SHOW SESSION STATUS
+WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VALUE > 0;
+--sorted_result
+SELECT a FROM t1 WHERE a = 0;
+SHOW SESSION STATUS
+WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VALUE > 0;
+--sorted_result
+SELECT a FROM t1 PARTITION(p0) WHERE a = 0;
+SHOW SESSION STATUS
+WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VALUE > 0;
+--sorted_result
+SELECT a FROM t1 WHERE a = 0;
+SHOW SESSION STATUS
+WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VALUE > 0;
+
+DROP TABLE t1;
diff --git a/sql/handler.cc b/sql/handler.cc
index 2218d27e9f9..06532643e8c 100644
--- a/sql/handler.cc
+++ b/sql/handler.cc
@@ -2724,6 +2724,10 @@ int handler::ha_open(TABLE *table_arg, const char *name, int mode,
   }
   reset_statistics();
   internal_tmp_table= MY_TEST(test_if_locked & HA_OPEN_INTERNAL_TABLE);
+  if (table->in_use)
+  {
+    status_var_increment(table->in_use->status_var.ha_open_count);
+  }
 
   DBUG_RETURN(error);
 }
@@ -2736,7 +2740,10 @@ int handler::ha_close(void)
     In_use is 0 for tables that was closed from the table cache.
   */
   if (table->in_use)
+  {
     status_var_add(table->in_use->status_var.rows_tmp_read, rows_tmp_read);
+    status_var_increment(table->in_use->status_var.ha_close_count);
+  }
   PSI_CALL_close_table(m_psi);
   m_psi= NULL; /* instrumentation handle, invalid after close_table() */
 
@@ -6102,6 +6109,8 @@ int handler::ha_external_lock(THD *thd, int lock_type)
     }
   }
 
+  increment_statistics(&SSV::ha_external_lock_count);
+
   /*
     We cache the table flags if the locking succeeded. Otherwise, we
     keep them as they were when they were fetched in ha_open().
diff --git a/sql/mysqld.cc b/sql/mysqld.cc
index 29b12934550..f1fe2d44b01 100644
--- a/sql/mysqld.cc
+++ b/sql/mysqld.cc
@@ -8550,6 +8550,8 @@ SHOW_VAR status_vars[]= {
   {"Handler_tmp_write",        (char*) offsetof(STATUS_VAR, ha_tmp_write_count), SHOW_LONG_STATUS},
   {"Handler_update",           (char*) offsetof(STATUS_VAR, ha_update_count), SHOW_LONG_STATUS},
   {"Handler_write",            (char*) offsetof(STATUS_VAR, ha_write_count), SHOW_LONG_STATUS},
+  {"Handler_open",             (char*) offsetof(STATUS_VAR, ha_open_count), SHOW_LONG_STATUS},
+  {"Handler_close",            (char*) offsetof(STATUS_VAR, ha_close_count), SHOW_LONG_STATUS},
   {"Key",                      (char*) &show_default_keycache, SHOW_FUNC},
   {"Last_query_cost",          (char*) offsetof(STATUS_VAR, last_query_cost), SHOW_DOUBLE_STATUS},
   {"Max_statement_time_exceeded", (char*) offsetof(STATUS_VAR, max_statement_time_exceeded), SHOW_LONG_STATUS},
diff --git a/sql/sql_class.h b/sql/sql_class.h
index 7bcb6a632d4..b181a7c35c0 100644
--- a/sql/sql_class.h
+++ b/sql/sql_class.h
@@ -774,6 +774,8 @@ typedef struct system_status_var
   ulong ha_savepoint_count;
   ulong ha_savepoint_rollback_count;
   ulong ha_external_lock_count;
+  ulong ha_open_count;
+  ulong ha_close_count;
 
   ulong net_big_packet_count;
   ulong opened_tables;
