数据表损坏的修复⽅式有哪些?
MySQL数据库cpu飙升到100%的话怎么处理
当cpu 飙升到 100%时,先用操作系统命令top 命令观察是不是mysqld占用导致的
如果不是,找出占用高的进程,并进行相关处理 如果是mysqld造成的,show processlist,看看里面跑的 session情况,是不是有消耗资源的 sql在运行。找出消耗高的 sql,看看执行计划是否准确,index 是否缺失,或者实在是数据量太大造成
一般来说,肯定要kill 掉这些线程(同时观察 cpu使用率是否下降),等进行相应的调整(比如说加索引、改sql、改内存参数)之后,再重新跑这些 SQL
也有可能是每个sql 消耗资源并不多,但是突然之问,有大量的session 连进来导致cpu 飙升,这种情況就需要跟应用一起来分析为何连接数会激增,再做出相应的调整,比如说限制连接数等
版本2
列出所有进程 show processlist 观察所有进程 多秒没有状态变化的(⼲掉)
查看慢查询,找出执⾏时间⻓的sql;
explain分析sql是否⾛索引,sql优化;
检查其他⼦系统是否正常,是否缓存失效引起,需要查看buffer命中率;
对于大流量的网站,您采用什么样的方法来解决各页面访问量统计问题?
a. 确认服务器是否能支撑当前访问量。
b. 优化数据库访问。
c. 禁止外部访问链接(盗链), 比如图片盗链。
d. 控制文件下载。
e. 使用不同主机分流。
f. 使用浏览统计软件,了解访问量,有针对性的进行优化
MySQL数据库作发布系统的存储,一天五万条以上的增量,预计运维三年,怎么优化?
a. 设计良好的数据库结构,允许部分数据冗余,尽量避免join查询,提高效率。
b. 选择合适的表字段数据类型和存储引擎,适当的添加索引。
c. mysql库主从读写分离。
d. 找规律分表,减少单表中的数据量提高查询速度。
e。添加缓存机制,比如memcached,apc等。
f. 不经常改动的页面,生成静态页面。
g. 书写高效率的SQL。比如 SELECT * FROM TABEL 改为 SELECT field_1, field_2, field_3 FROM TABLE.
mysql有关权限的表哪几个?
MySQL服务器通过权限表来控制用户对数据库的访问,权限表存放在mysql数据库里,由mysql_install_db脚本初始化。这些权限表分别是user, db, table_priv, columns_ priv和host。 下⾯分别 介绍⼀下这些表的结构和内容:
- user权限表:记录允许连接到服务器的用户帐号信息,里面的权限是全局级的
- db权限表:记录各个帐号在各个数据库上的操作权限
- table_priv权限表:记录数据表级的操作权限
- colums_priv权限表:记录数据列级的操作权限
- host 权限表:配合db权限表对给定主机上数据库级操作权限作更细致的控制。这个权限表不受GRANT 和REVOKE语句的影响