MYSQL一个语句很慢,怎么调优法?
由于问题是调优,也就是基本不能改变总体的现有实现。下面分析慢的缘由并给出对应可能正确的解决方案
一、SQL语句自己的优化,好比去掉没必要要的排序等。
二、若是是查询过于复杂,也即包含了逻辑(体如今还须要在Java等代码中组织数据),这时能够尝试编写存储过程将这一过程原子化,能够减小访问数据库的次数。
三、若是SQL已经没法继续改进,业务也已固定,那么从SQL自己是无法优化了,能够试着使用缓存,前提是数据主要用于读,而不是频繁的修改。java
线程池的机制是怎么样的? 好比 线程池大小为10, 如今有100个线程等待运行。
介于这个问题,若是是Java,我就默认楼主说的是FixedThreadPool线程池(定长)了。
有新的线程就交给线程池,它会负责管理,此处假设设定的最大并发为10个线程,若是已经有10个线程在执行了,那么后续的90个线程会进入队列,直到以前已经开始执行的10个线程中有一个或者多个执行完毕,这90个中的一个或多个就会被线程池执行。数据库
一个网页打开很慢,页面很慢怎么调优?从哪些方面,具体怎么调优?
首先 肯定慢的缘由在哪里:浏览器渲染仍是从服务器获取数据很慢。
通常是从服务器获取数据慢:
域名解析慢,这个通常不会出现问题,不过不排除
服务器缘由:
网络带宽过小
应用服务器性能问题:
一、是否是数据库查询太慢,看下数据库的慢日志,如有相关记录,优化数据库查询
二、获取数据后通过了一个漫长的处理过程:可能对数据进行了耗时的处理
三、服务器自己没什么问题:高并发致使服务器响应不过来:集群,使用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)解决方案
顺序获取