加入收藏 | 设为首页 | 会员中心 | 我要投稿 聊城站长网 (https://www.0635zz.com/)- 智能语音交互、行业智能、AI应用、云计算、5G!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

MySQL8的数据库优化讲义详解

发布时间:2023-08-18 15:23:11 所属栏目:MySql教程 来源:
导读:下文内容主要给大家带来MySQL8的数据库优化讲义,这里所讲到的知识,与书籍略有不同,都是亿速云专业技术人员在与用户接触过程中,总结出来的,具有一定的经验分享价值,希望给广大读者带来帮助。

EXPLAIN

E
下文内容主要给大家带来MySQL8的数据库优化讲义,这里所讲到的知识,与书籍略有不同,都是亿速云专业技术人员在与用户接触过程中,总结出来的,具有一定的经验分享价值,希望给广大读者带来帮助。
 
EXPLAIN
 
EXPLAIN
 
select dept_name from dept_emp join employees on dept_emp.emp_no=employees.emp_no join departments on departments.dept_no=dept_emp.dept_no where employees.first_name='Aamer';
 
EXPLAIN format=JSON select dept_name from dept_emp join employees on dept_emp.emp_no=employees.emp_no join departments on departments.dept_no=dept_emp.dept_no where employees.first_name='Aamer';
 
mysql> select connection_id();
 
+-----------------+
 
| connection_id() |
 
+-----------------+
 
|              30 |
 
+-----------------+
 
1 row in set (0.01 sec)
 
mysql> explain format=json for connection 30\G
 
ERROR 3012 (HY000): EXPLAIN FOR CONNECTION command is supported only for SELECT/UPDATE/INSERT/DELETE/REPLACE
 
mysql> pager grep rows
 
mysql> SELECT e.emp_no,salary from  salaries s join employees e on s.emp_no=e.emp_no where first_name='Adam';
 
2384 rows in set (0.24 sec)
 
mysql> pager
 
Default pager wasn't set, using stdout.
 
MySQL8的数据库优化讲义
 
mysqlslap
 
mysqlslap 对于模拟多个用户同时对 MySQL 发起“进攻”提供了方便。同时详细的提供了“高负荷*** MySQL”的详细数据报告。
 
#mysqlslap -uroot -p --create-schema=employees --query="SELECT e.emp_no,salary from  salaries s join employees e on s.emp_no=e.emp_no where first_name='Adam';" -c 100 -i 100
 
Enter password:
 
Benchmark
 
Average number of seconds to run all queries: 0.995 seconds
 
Minimum number of seconds to run all queries: 0.876 seconds
 
Maximum number of seconds to run all queries: 1.155 seconds
 
Number of clients running queries: 100
 
Average number of queries per client: 1
 
#mysqlslap -uroot -p  --auto-generate-sql --concurrency=50,100 --number-of-queries=1000  -i 5  --debug-info
 
Enter password:
 
Benchmark
 
Average number of seconds to run all queries: 0.148 seconds
 
Minimum number of seconds to run all queries: 0.148 seconds
 
Maximum number of seconds to run all queries: 0.148 seconds
 
Number of clients running queries: 50
 
Average number of queries per client: 20
 
Benchmark
 
Average number of seconds to run all queries: 0.143 seconds
 
Minimum number of seconds to run all queries: 0.143 seconds
 
Maximum number of seconds to run all queries: 0.143 seconds
 
Number of clients running queries: 100
 
Average number of queries per client: 10
 
mysqlslap -uroot -p  --auto-generate-sql --only-print
 
#mysqlslap -uroot -p --concurrency=50,100,200 --iterations=1 --number-int-cols=4 --number-char-cols=35 \
 
--auto-generate-sql --auto-generate-sql-add-autoincrement --auto-generate-sql-load-type=mixed --engine=innodb --number-of-queries=200
 
Enter password:
 
Benchmark
 
Running for engine innodb
 
Average number of seconds to run all queries: 0.042 seconds
 
Minimum number of seconds to run all queries: 0.042 seconds
 
Maximum number of seconds to run all queries: 0.042 seconds
 
Number of clients running queries: 50
 
Average number of queries per client: 4
 
Benchmark
 
Running for engine innodb
 
Average number of seconds to run all queries: 0.022 seconds
 
Minimum number of seconds to run all queries: 0.022 seconds
 
Maximum number of seconds to run all queries: 0.022 seconds
 
Number of clients running queries: 100
 
Average number of queries per client: 2
 
Benchmark
 
Running for engine innodb
 
Average number of seconds to run all queries: 0.515 seconds
 
Minimum number of seconds to run all queries: 0.515 seconds
 
Maximum number of seconds to run all queries: 0.515 seconds
 
Number of clients running queries: 200
 
Average number of queries per client: 1
 
#mysqlslap -uroot -p --delimiter=";" --create="CREATE TABLE a (b int);INSERT INTO a VALUES (23)" --query="SELECT * FROM a" --concurrency=50 --iterations=200
 
Enter password:
 
Benchmark
 
Average number of seconds to run all queries: 0.002 seconds
 
Minimum number of seconds to run all queries: 0.002 seconds
 
Maximum number of seconds to run all queries: 0.007 seconds
 
Number of clients running queries: 50
 
Average number of queries per client: 1
 
mysqlslap --concurrency=5 --iterations=5 --query=query.sql --create=create.sql --delimiter=";"
 
参考:https://my.oschina.net/moooofly/blog/152547
 
where、order by、group by、表连接都会使用到索引  
 
主键的选择:
 
1、唯一非空
 
2、尽量的小,因为所有的二级索引都会存储主键
 
3、选择一个单调自增的键,物理行是按照主键排序的
 
alter table employees add [unqiue] index idx_name(first_name(10));
 
alter table employees drop index idx_name;
 
 

(编辑:聊城站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章