mysql优化 学习笔记二(实战)

1. 有些时候查第一次数据的时候,查数据不是很占时间,主要是 select count(*) from t_table占用时间 ;

优化:

可以把这个结果放在redis里面,或者定时任务去更新,或者新建一张统计表去存(每次大数据插入完数据之后就去更新这个表)

这样做,总数可能会有一些偏差 1对于10来说占10% ,但是1000 对于 1千万来说就微不足道了。

2. 联合索引:适合三级区域联动(四川->成都->天府新区) , 时间控件选择查询(startTime,endTime)

3. select count(*) from t_table 长时间不能出来,查询时间一直增长,但是结果就是不出来,

原因:(网络问题,或者服务器性能太差,等等)。可以试试 explain select count(*) from t_table 快速查询(但是这是一个估算值,与真实值还是相差比较大;1千万的数据,亲自测试,要查20来秒)

4. navicat 远程连接不上 mysql,但是mysql本地缺可以登录;一般都是防火墙问题

(有些时候做了异常操作,服务器防火墙会自动开启;正在Navicat上操作数据库,突然链接不上了,多半是自动开启了防火墙)

Linux命令查看和关闭防火墙_WxyangID的博客-CSDN博客

5. 1千万数据大约1个G,如果表中字段够多的话(空数据越少),会更大。

6. sql优化:将所有查询条件加上索引,然后查出这条语句的主键,再select * from t t1 inner join (select id from ***) t2 on t1.id=t2.id

7. Navicat - > 工具 -> 数据传输(有时候修改数据库脚本需要更新表结构,数据量大难得重新导入,可以在Navicat里面新建一个库通过工具-数据传输进行备份数据)。

8.搜索引擎优化,用es做搜索,在内存里面建立索引,直接就走内存查询;不再走数据库了

9.navicat的导入向导可以通过txt(这个txt中只有字段值没有sql结构)导入数据库表中,速度很快。

10.利用多线程,并发查询!(这个方法最适用于不熟悉业务,不好改动原来的代码)

linux下安装mysql:(centos系统) ================================>

安装mysql5.7.20:
https://www.cnblogs.com/cz-xjw/p/8006904.html

操作命令:

查看mysql版本:mysql   -V(有些可能没安装这个命令)

查看mysql是否运行:ps -ef|grep mysqld

启动/停止/重启mysql:service mysqld  start/stop/restart

问题1:
mysqld_safe error: log-error set to '/var/log/mariadb/mariadb.log', however file don't exists. Create writable for user 'mysql'.
=>
https://blog.csdn.net/liukai6/article/details/78481308

问题2:

bash: mysql: command not found
=>
https://blog.csdn.net/benjamin_whx/article/details/44672487


问题3:
mysql启动失败:不能创建pid文件
mysql 启动报错 /usr/local/mysql//libexec/mysqld: Can't create/write to file '/var/run/mysqld/mysqld.pid'
=>
https://www.cnblogs.com/vickygu2007/p/5258526.html

问题4:

mysql默认密码忘记:

https://www.jb51.net/article/100211.htm

Host is not allowed to connect to this MySQL server错误的解决办法

=>

Host is not allowed to connect to this MySQL server错误的解决办法_zhangchao19890805的专栏-CSDN博客

问题5:
SQL Error (1130): Host '192.168.1.126' is not allowed to connect to this MySQL server
解决:
https://blog.csdn.net/zqz8023/article/details/50466925

问题6:

mysql -u root -p command not found

MySQL问题解决:-bash:mysql:command not found - mysql数据库栏目 - 红黑联盟

===========================================>

卸载yum方式安装的mysql

centos7彻底卸载mysql和通过yum安装mysql_innerpeacez成长之路-CSDN博客_centos7卸载mysql

其实有些时候,mysql的文件夹和配置不用完全删除也可以,主要是卸载干净安装的组件就可以了。

有些时候卸载了,还是可以查看到mysql的相关信息,关闭掉xshell的连接客户端,重新再登录、打开

===========================================>
etc下面的my.cnf配置非常重要,没有需要手动创建,里面要配置mysql安装路径 等其他路径
安装过程注意有些命令的空格没隔开, 还有-等其它符号是否符合规范。

注意事项:

1.安装不同版本的mysql要找对应的资料,因为不同版本的安装差别还是有点儿大

2.mysql有些修改需要刷新缓存,有些修改需要重启mysql服务

3.my.cnf中的配置不要重复,免得mysql找不到方向
4.skip-grant-table配置有时候可能会让mysql不能启动

=====================================================> end

常遇错误:

The last packet successfully received from the server was x milliseconds ago解决方案

The last packet successfully received from the server was x milliseconds ago解决方案_mingrenc的博客-CSDN博客

windows下安装mysql: ================================>

MySQL5.7.24压缩包安装教程_JAVAWeb小将的博客-CSDN博客_mysql安装包

Mysql数据库创建非Root用户_gymaisyl的博客-CSDN博客_mysql创建非root用户 (赋与远程连接 , username改为root)

=====================================================================

数据库优化,参考文章:

如何优化MySQL千万级大表,我写了6000字的解读_杨建荣的学习笔记-CSDN博客

=====================================================================

mysql 导入比较慢的解决方案 :       cnblogs.com/xuweili/articles/3965006.html

mysql>show variables like 'max_allowed_packet';
mysql>show variables like 'net_buffer_length';

根据参数值书写mysqldump命令,如:
mysql>mysqldump -uroot -p 数据库名  -e --max_allowed_packet=1048576 --net_buffer_length=16384 > SQL文件

如:

mysql>mysqldump -uroot -p discuz  -e --max_allowed_packet=1048576 --net_buffer_length=16384 > discuz.sql

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值