分类目录归档:sql

Thread stack overrun: 解决办法

系统能不能连接数据库,关键要看两个数据: 1、数据库系统允许的最大可连接数max_connections。这个参数是可以设置的。如果不设置,默认是100。 2、数据库当前的连接线程数threads_connected。这是动态变化的。 如果 threads_connected == max_connections 时,数据库系统就不能提供更多的连接数了,这时,如果程序还想新建连接线程,数据库系统就会拒绝。 因为创建和销毁数据库的连接,都会消耗系统的资源。而且为了避免在同一时间同时打开过多的连接线程,现在编程一般都使用所谓数据库连接池技术。 但数据库连接池技术,并不能避免程序错误导致连接资源消耗殆尽。 这种情况通常发生在程序未能及时释放数据库连接资源或其他原因造成数据库连接资源不能释放, 该错误的简便的检查办法是,在刷新页面时,不断监视threads_connected的变化。如果max_connections足够大,而 threads_connected值不断增加以至达到max_connections,那么,就应该检查程序了。当然,如果采用数据库连接池技术,threads_connected增长到数据库连接池的最大连接线程数时,就不再增长了。 查看max_connections 进入MySQL,用命令:show variables 查看数据库最大可连接数的变量值:max_connections 查看threads_connected 进入MySQL,用命令:show status 查看当前活动的连接线程变量值:threads_connected 设置max_connections 设置办法是在my.cnf文件中,添加下面的最后红色的一行: ——————————————————————————– [mysqld] port=3306 #socket=MySQL skip-locking set-variable = key_buffer=16K set-variable = max_allowed_packet=1M set-variable = thread_stack=194K set-variable = table_cache=4 … 继续阅读

发表在 sql | 留下评论

JAVA获取数据库连接信息

package com.util.jdbc;     import java.sql.Connection;   import java.sql.Driver;   import java.sql.DriverManager;   import java.sql.PreparedStatement;   import java.sql.ResultSet;   import java.sql.ResultSetMetaData;   import java.sql.SQLException;   import java.util.Enumeration;     import org.apache.log4j.Logger;     /**   * @author ken   * @Time 2011-12-10   * SQL API 学习   */  public class JDBCMsg {     … 继续阅读

发表在 sql | 留下评论