MYSQL一个语句很慢,怎么调优法?
因为问题是调优,也就是基本不能改变整体的现有实现。下面分析慢的原因并给出对应可能正确的解决方案
1、SQL语句本身的优化,比如去掉不必要的排序等。
2、如果是查询过于复杂,也即包含了逻辑(体现在还需要在Java等代码中组织数据),这时可以尝试编写存储过程将这一过程原子化,可以减少访问数据库的次数。
3、如果SQL已经无法继续改进,业务也已固定,那么从SQL本身是没法优化了,可以试着使用缓存,前提是数据主要用于读,而不是频繁的修改。
线程池的机制是怎么样的? 比如 线程池大小为10, 现在有100个线程等待运行。
介于这个问题,如果是Java,我就默认楼主说的是FixedThreadPool线程池(定长)了。
有新的线程就交给线程池,它会负责管理,此处假设设定的最大并发为10个线程,如果已经有10个线程在执行了,那么后续的90个线程会进入队列,直到之前已经开始执行的10个线程中有一个或者多个执行完毕,这90个中的一个或多个就会被线程池执行。
一个网页打开很慢,页面很慢怎么调优?从哪些方面,具体怎么调优?
首先 确定慢的原因在哪里:浏览器渲染还是从服务器获取数据很慢。
一般是从服务器获取数据慢:
域名解析慢,这个一般不会出现问题,不过不排除
服务器原因:
网络带宽太小
应用服务器性能问题:
1、是不是数据库查询太慢,看下数据库的慢日志,若有相关记录,优化数据库查询
2、获取数据后经过了一个漫长的处理过程:可能对数据进行了耗时的处理
3、服务器本身没什么问题:高并发导致服务器响应不过来:集群,使用Nginx负载均衡,使用Redis统一管理Session。依然不行?拆分业务,分布式处理。
MYSQL常见存储引擎是InnoDB和MyISAM
InnoDB作为默认引擎,在高可用性和高性能的折中选择。
主要优势:
支持事物,具有提交,回滚和崩溃恢复能力的事务安全。
支持行级锁和Oracle风格的读取增加多用户的并发性和性能。
基于主键优化数据的查询。
支持外键。
可以自由的组合其他类型存储引擎的表,比如查询时join其他存储引擎的表。
处理大量数据时的InnoDB已被设计为CPU的效率和最大的性能。
MyISAM
MyISAM致力于快速查询,常常是为了WEB应用而构建。InnoDB和MyIsam,当然还有其他的,InnoDB支持事务,MyISAM不支持,Innodb支持行级锁,myisam不支持,主要用于读写分离,读库可以使用myisam存储引擎,效率更高
java死锁
1)原因
资源有限,刀叉问题。
2)排查
1. 使用jstack打印进程 堆栈信息,搜索关键字。找到阻塞线程。可以使用tda.bat 查看更详细的堆栈信息。
2. 使用JDK给我们的的工具JConsole,可以通过打开cmd然后输入jconsole打开。而后点击检测死锁。
3)解决方案
顺序获取
来源:oschina
链接:https://my.oschina.net/u/2834932/blog/798576