It's swapping. That's a performance killer. First thing to do is to reconfigure mysql in order to stop swapping. If you want help with that, then please ...
(i) post the results of ...
select engine,data,indexes,total
from (
select
ifnull(engine,'TOTALS') as engine,
concat(data,' GB') as data,
concat(indexes,' GB') as indexes,
concat(tot,' GB') as total,
if(engine is null,-1,tot) as ord
from (
select
engine,
round( sum(data_length)/1024/1024/1024, 2 ) as data,
round( sum(index_length)/1024/1024/1024, 2 ) as indexes,
round( sum(data_length+index_length)/1024/1024/1024, 2 ) as tot
from information_schema.tables
where engine is not null and engine not in('information_schema','performance_schema')
group by engine with rollup
) sums
) list
order by list.ord desc;
(ii) results of the following queries in the mysql client program ...
show variables;
show global status;
select version();
(iii) what's the OS? Is the disk fast, how big is it, how much free space?