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