1.MySQL查询各个表的数据量
use information_schema;
select table_name,table_rows from tables
where TABLE_SCHEMA = '数据库名字'
order by table_rows desc;
2.查看内存缓存使用情况
SHOW GLOBAL STATUS LIKE 'innodb_buffer_pool_pages_%';
3.MySQL数据库优化建议
1) 数据库最大连接调到1000
2) innodb_buffer_pool_size=4G
3) innodb_flush_log_at_trx_commit=0
4) innodb_log_file_size=1000M
4.MySQL复制表操作
create table bi_core_order201811 as select * from 表名 where 查询条件
5.MySQL查看连接使用情况
show status like 'Threads%';
show global status like 'Max_used_connections';
show variables like '%max_connections%';
5.MySQL事件开启状态
show variables like 'event_scheduler';
6.显示当前SQL进程
show processlist
7.显示开启MySQL查询慢日志功能
set global slow_query_log = on;
set global log_output = file;
set long_query_time = 1;
show variables like '%quer%';
8.MySQL导入千万级的数据
load data infile "D:/temp.csv" into table detail fields terminated by ',' ENCLOSED BY '"' ESCAPED BY "\\";
MySQL查询技巧
- 当查询一条记录的时候,请在查询记录后面加上 limit 1能提高查询速度
- MySQL字符串截取函数 substring_index(before_imgs, ‘@’, 1) ‘beforeimgs’ 将before_images字段按照@分割取第一个
- 查询今日数据:TO_DAYS(optime)=TO_DAYS(now())
- 查询昨日数据:DATEDIFF(optime,NOW())=0
- 有的时候我们命名的字段有可能会跟数据库关键词重复,建议查询的字段都加上
field
转义一下 - 数据冗余并不是一件坏事,有时候它不光能够提高查询速度,而且也是对过去数据留下的一个证据,但是关联的字段建议保留,方便需要时进行数据更新,尤其是针对数据更新慢或者不更新的字段,冗余是一个好事。
- 并不是所有的数据库操作都需要开启事务,尤其是查询的时候,对于大部分应用和系统来说,查询的时候真的没有必要加上事务。
- 所有的数据库持久层框架都是基于JDBC不要认为框架一定好,拿MyBatis和Hibernate来说,他们其实针对与大型项目有优势,低于50万的项目,优势不是很明显,并且如果数据量大了查询优化也没有底层的JDCB方式方便,如果你的技术够硬,你可以针对JDBC做一层封装,这样方便后期功能升级,就算项目发展成了大型项目,你也能很轻松的对街上成熟的持久层框架。