show processlist;     select * from information_schema.processlist;
Command:The type of command the thread is executing. 例如上面的例子中,Sleep,或者Query

时间戳timestamp
create table t_var (id VARCHAR(10),name VARCHAR(255),descs VARCHAR(500)
,create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP
,update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP)
create_time 在创建新记录的时候把这个字段设置为当前时间,但以后修改时,不再刷新它
update_time 在创建新记录和修改现有记录的时候都对这个数据列刷新

一个字节8位
byte 8位
short 16位
int 32位
long 64位
float 32位
double 64位
char 16位

一个char能够存储16bit大小的数值,即2个字节。就常用的UTF-8编码来说,我们都听说过他是用3或者4个字节来表示一个汉字的
mysql varchar(10) 10个字符或汉字

4.0版本以下,varchar(20),指的是20字节,如果存放UTF8汉字时,只能存6个(每个汉字3字节) ;5.0版本以上,varchar(20),指的是20字符,无论存放的是数字、字母还是UTF8汉字(每个汉字3字节),都可以存放20个,最大大小是65532字节 ;varchar(20)在Mysql4中最大也不过是20个字节,但是Mysql5根据编码不同,存储大小也不同,具体有以下规则:
a) 存储限制
varchar 字段是将实际内容单独存储在聚簇索引之外,内容开头用1到2个字节表示实际长度(长度超过255时需要2个字节),因此最大长度不能超过65535。
b) 编码长度限制
字符类型若为gbk,每个字符最多占2个字节,最大长度不能超过32766;
字符类型若为utf8,每个字符最多占3个字节,最大长度不能超过21845。
若定义的时候超过上述限制,则varchar字段会被强行转为text类型,并产生warning。
c) 行长度限制
导致实际应用中varchar长度限制的是一个行定义的长度。 MySQL要求一个行的定义长度不能超过65535。

mysql varchar 自动截取问题

varchar(3) 汉字也是3个 字符长度 最大255个字符(汉字)
int(32) 21亿 2119010118 10位数字   unsigned 无符号  范围增加一倍 
不论是int(3)还是int(11),它在数据库里面存储的都是4个字节的长度,在使用int(3)的时候如果你输入的是10,会默认给你存储位010
创建类型的时候加 zerofill这个值,表示用0填充,否则看不出效果
double(12,2) 总共12位,小数点后两位

数字型

类型
大小
范围(有符号)
范围(无符号)
用途
TINYINT
1 字节
(-128,127)
(0,255)
小整数值
SMALLINT
2 字节
(-32 768,32 767)
(0,65 535)
大整数值
MEDIUMINT
3 字节
(-8 388 608,8 388 607)
(0,16 777 215)
大整数值
INT或INTEGER
4 字节
(-2 147 483 648,2 147 483 647)
(0,4 294 967 295)
大整数值
BIGINT
8 字节
(-9 233 372 036 854 775 808,9 223 372 036 854 775 807)
(0,18 446 744 073 709 551 615)
极大整数值
FLOAT
4 字节
(-3.402 823 466 E+38,1.175 494 351 E-38),0,(1.175 494 351 E-38,3.402 823 466 351 E+38)
0,(1.175 494 351 E-38,3.402 823 466 E+38)
单精度
浮点数值
DOUBLE
8 字节
(1.797 693 134 862 315 7 E+308,2.225 073 858 507 201 4 E-308),0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308)
0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308)
双精度
浮点数值
DECIMAL
对DECIMAL(M,D) ,如果M>D,为M+2否则为D+2
依赖于M和D的值
依赖于M和D的值
小数值

字符类型

CHAR
0-255字节
定长字符串
VARCHAR
0-255字节
变长字符串
TINYBLOB
0-255字节
不超过 255 个字符的二进制字符串
TINYTEXT
0-255字节
短文本字符串
BLOB
0-65 535字节
二进制形式的长文本数据
TEXT
0-65 535字节
长文本数据
MEDIUMBLOB
0-16 777 215字节
二进制形式的中等长度文本数据
MEDIUMTEXT
0-16 777 215字节
中等长度文本数据
LOGNGBLOB
0-4 294 967 295字节
二进制形式的极大文本数据
LONGTEXT
0-4 294 967 295字节
极大文本数据

枚举集合
ENUM (最多65535个成员) 64KB
SET (最多64个成员) 64KB

时间类型

类型
大小
(字节)
范围
格式
用途
DATE
3
1000-01-01/9999-12-31
YYYY-MM-DD
日期值
TIME
3
'-838:59:59'/'838:59:59'
HH:MM:SS
时间值或持续时间
YEAR
1
1901/2155
YYYY
年份值
DATETIME
8
1000-01-01 00:00:00/9999-12-31 23:59:59
YYYY-MM-DD HH:MM:SS
混合日期和时间值
TIMESTAMP
8
1970-01-01 00:00:00/2037 年某时
YYYYMMDD HHMMSS
混合日期和时间值,时间戳

mysql连接情况
show processlist; show full processlist;
select * from information_schema.processlist;

唯一键 UNIQUE KEY 索引使用,字符串必须加''才能使用索引    创建唯一约束的时候就创建了唯一索引

查询效率
const 主键
const unique唯一约束 联合唯一,全部使用为const,只使用第一个为ref
ref 索引

1、type
这是重要的列,显示连接使用了何种类型。从最好到最差的连接类型为const、eq_reg、ref、range、indexhe和ALL
说明:不同连接类型的解释(按照效率高低的顺序排序)
system:表只有一行:system表。这是const连接类型的特殊情况。
const :表中的一个记录的最大值能够匹配这个查询(索引可以是主键或惟一索引)。因为只有一行,这个值实际就是常数,因为MYSQL先读这个值然后把它当做常数来对待。
eq_ref:在连接中,MYSQL在查询时,从前面的表中,对每一个记录的联合都从表中读取一个记录,它在查询使用了索引为主键或惟一键的全部时使用。
ref:这个连接类型只有在查询使用了不是惟一或主键的键或者是这些类型的部分(比如,利用最左边前缀)时发生。对于之前的表的每一个行联合,全部记录都将从表中读出。这个类型严重依赖于根据索引匹配的记录多少—越少越好。
range:这个连接类型使用索引返回一个范围中的行,比如使用>或<查找东西时发生的情况。
index:这个连接类型对前面的表中的每一个记录联合进行完全扫描(比ALL更好,因为索引一般小于表数据)。
ALL:这个连接类型对于前面的每一个记录联合进行完全扫描,这一般比较糟糕,应该尽量避免。

const
在WHERE子句中包含条件column = constant,并且这些列是primary key,或者这些列是UNIQUE(假设该UNIQUE同时被定义为NOT NULL)。这样生成的查询结果也可以成为常量表
eq_ref
对于每个来自于前面的表的行组合,从该表中读取一行。这可能是最好的联接类型,除了const类型。它用在一个索引的所有部分被联接使用并且索引是UNIQUE或PRIMARY KEY。
ref
对于每个来自于前面的表的行组合,所有有匹配索引值的行将从这张表中读取。如果联接只使用键的最左边的前缀,或如果键不是UNIQUE或PRIMARY KEY(换句话说,如果联接不能基于关键字选择单个行的话),则使用ref。如果使用的键仅仅匹配少量行,该联接类型是不错的。
ref_or_null
该联接类型如同ref,但是添加了MySQL可以专门搜索包含NULL值的行。在解决子查询中经常使用该联接类型的优化

2、key_len
使用的索引的长度。在不损失精确性的情况下,长度越短越好
3、Extra
Using index :列数据是从仅仅使用了索引中的信息而没有读取实际的行动的表返回的,这发生在对表的全部的请求列都是同一个索引的部分的时候。

/**
     * The minimum number of active connections that can remain idle in the
     * pool, without extra ones being created, or 0 to create none.
     */
    protected int minIdle = GenericObjectPool.DEFAULT_MIN_IDLE;

/**
     * The maximum number of connections that can remain idle in the
     * pool, without extra ones being released, or negative for no limit.
     */
    protected int maxIdle = GenericObjectPool.DEFAULT_MAX_IDLE;

initialSize 10 初始化连接:连接池启动时创建的初始化连接数量,1.2版本后支持
maxActive 100 最大活动连接:连接池在同一时间能够分配的最大活动连接的数量,
如果设置为非正数则表示不限制
maxIdle 10 最大空闲连接:连接池中容许保持空闲状态的最大连接数量,超过的空闲连接将被释放,
如果设置为负数表示不限制
minIdle 5 最小空闲连接:连接池中容许保持空闲状态的最小连接数量,低于这个数量将创建新的连接,
如果设置为0则不创建
maxWait 无限 最大等待时间:当没有可用连接时,连接池等待连接被归还的最大时间(以毫秒计数),
超过时间则抛出异常,如果设置为-1表示无限等待

package service;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import com.mysql.jdbc.PreparedStatement;
public class TestConnect {static{try {Class.forName("com.mysql.jdbc.Driver");} catch (ClassNotFoundException e) {System.out.println("找不到驱动程序类 ,加载驱动失败!");e.printStackTrace();}  }private static Connection getConnect(){String url = "jdbc:mysql://localhost:3306/xmh?useUnicode=true&characterEncoding=gbk";String username = "root";String password = "admin";Connection con = null;try {con = DriverManager.getConnection(url, username,password);} catch (SQLException se) {System.out.println("数据库连接失败!");se.printStackTrace();} return con;}public static void sqlTest(){Connection con = null;PreparedStatement pstmt = null;ResultSet rs = null;try {con = getConnect();String sql = "select * from tbl_user where id = ?;";if (con != null) {// Statement stmt = (Statement) con.createStatement() ; //静�?sqlpstmt = (PreparedStatement) con.prepareStatement(sql);// 动�?sql// CallableStatement cstmt = (CallableStatement)// con.prepareCall("{CALL demoSp(? , ?)}") ; //存储过程//              ResultSet rs = pstmt.executeQuery("SELECT * FROM ...") ; //查询数据库的SQL语句,返回一个结果集(ResultSet)对�?
//              int rows = pstmt.executeUpdate("INSERT INTO ...") ;//用于执行INSERT、UPDATE�?DELETE语句以及SQL DDL语句
//              boolean flag = pstmt.execute( sql) ; //:用于执行返回多个结果集�?多个更新计数或二者组合的 语句pstmt.setObject(1, "id1");rs = pstmt.executeQuery();while(rs.next()){   String name1 = rs.getString("id") ;String name = rs.getString(1) ;   String pass = rs.getString(2) ; // 此方法比较  System.out.println(name1+" "+name+" "+pass);}}} catch (SQLException e) {e.printStackTrace();} finally{try {if (pstmt != null) {pstmt.close();}if (rs != null) {rs.close();}if (con != null) {con.close();}} catch (SQLException e) {e.printStackTrace();}}}public static void main(String[] args) {sqlTest();}
}

Class.forName("oracle.jdbc.driver.OracleDriver");
String url = "jdbc:oracle:thin:@yqy-oracle-master-dev.caiwu.corp:1562:O11G1562";//BLOB clob = (BLOB) rs.getBlob(5);//FileUtils.writeStringToFile(file,result, "utf-8");

File file_clob = new File("F:\\data\\"+rs.getString(4)+"_"+rs.getString(3)+".ZIP");
char[] buff2 = new char[1024];
OutputStreamWriter writer = new OutputStreamWriter(new FileOutputStream(file_clob));
Reader reader = rs.getCharacterStream(5);
for (int i = 0; (i = reader.read(buff2)) > 0;) {
writer.write(buff2, 0, i);
}
writer.flush();
writer.close();
reader.close();

  

mysql_install_db  --defaults-file=/app/mysql/mysql/my.cnf  初始化mysql
FLUSH TABLES WITH READ LOCK;
./bin/mysqladmin -uroot -S /app/mysql/mysql_3307/mysql.sock password 123456 设置制定socket数据库root密码
 ./mysql -uroot -S /app/mysql/mysql_3307/mysql.sock  -p123456   链接制定Scoke的数据库
 
my.cnf  中
log-bin=mysql-bin   开启日志
binlog-do-db=gcoin   制定同步的数据库,不指定同步所有库
netstat -ntlp
nohup ./bin/mysqld_safe --defaults-file=/app/mysql/mysql/my.cnf   >> /dev/null  &  后台制定文件启动mysql
mysqld_multi --defaults-file=/app/mysql/mysql/my.cnf start 3306

mysqladmin -hlocalhost -uroot -pxxx -P3306 shutdown  关闭指定端口的mysql
./bin/mysqladmin  -hlocalhost -uroot -p123456 -S /app/mysql/mysql_3307/mysql.sock shutdown

./mysql -uroot -S /app/mysql/mysql/mysql.sock  -p123456
./mysql -uroot -S /app/mysql/mysql_3307/mysql.sock  -p123456  登录3307

环境:linux主机上已经yum安装了mysql,而且数据库正在运行。
在不关闭/重启mysql的情况下,重新启动一个新的mysql实例,使用3307端口,实现一台机器上同时运行两个数据库实例。
1、创建新的mysql实例数据存储目录:
mkdir -p /data/mysql_3307
2、把my.cnf配置文件复制一份,开几个端口要复制几份。
cp /etc/my.cnf /data/mysql_3307/my.cnf
3、修改/data/mysql_3307/my.cnf文件,把默认的3306端口改成 3307,根据实际情况修改socket,basedir,datadir 。
[client]
port = 3307
socket = /tmp/mysql_3307.sock
default-character-set = utf8
# The MySQL server
[mysqld]
port = 3307
user = mysql
socket = /tmp/mysql_3307.sock
basedir = /usr
datadir = /data/mysql_3307
character-set-server = utf8
log-error = /data/mysql_3307/error.log
pid-file = /data/mysql_3307/localhost.localdomain.pid
4、初始化数据库:
mysql_install_db --basedir=/usr --datadir=/data/mysql_3307 --user=mysql
mysql是yum安装的,所以basedir=/usr就可以,它会自动在/usr下找mysql的安装目录。
如果是源码包编译安装的mysql,假如安装路径是在/usr/local/mysql
cd /usr/local/mysql/scripts/
./mysql_install_db --basedir=/usr/local/mysql --datadir=/data/mysql_3307 --user=mysql
5、启动mysql,要指定.cnf文件启动
mysqld_safe --defaults-file=/data/mysql_3307/my.cnf --user=mysql &
6、停止MYSQL,需要指定对应的sock文件。
mysqladmin -uroot -S /tmp/mysql_3307.sock shutdown
7、登陆3307端口的mysql
mysql -S /tmp/mysql_3307.sock -P 3307

mysqladmin -hlocalhost -uroot -pxxx -P3306 shutdown  关闭指定端口的mysql./bin/mysqladmin  -hlocalhost -uroot -p123456 -S /app/mysql/mysql_3307/mysql.sock shutdown mysql_install_db  --defaults-file=/app/mysql/mysql/my.cnf  初始化mysqlFLUSH TABLES WITH READ LOCK;./bin/mysqladmin -uroot -S /app/mysql/mysql_3307/mysql.sock password 123456 设置制定socket数据库root密码./mysql -uroot -S /app/mysql/mysql_3307/mysql.sock  -p123456   链接制定Scoke的数据库my.cnf  中
log-bin=mysql-bin   开启日志
binlog-do-db=gcoin   制定同步的数据库,不指定同步所有库
netstat -ntlpnohup ./bin/mysqld_safe --defaults-file=/app/mysql/mysql/my.cnf   >> /dev/null  &  后台制定文件启动mysqlmysqld_multi --defaults-file=/app/mysql/mysql/my.cnf start 33061、create schema [数据库名称] default character set utf8 collate utf8_general_ci;--创建数据库采用create schema和create database创建数据库的效果一样。2、create user '[用户名称]'@'%' identified by '[用户密码]';--创建用户密码8位以上,包括:大写字母、小写字母、数字、特殊字符%:匹配所有主机,该地方还可以设置成‘localhost’,代表只能本地访问,例如root账户默认为‘localhost‘3、grant select,insert,update,delete,create on [数据库名称].* to [用户名称];--用户授权数据库*代表整个数据库4、flush  privileges ;--立即启用修改5、revoke all on *.* from tester;--取消用户所有数据库(表)的所有权限6、delete from mysql.user where user='tester';--删除用户7、drop database [schema名称|数据库名称];--删除数据库grant select,insert,update,delete,create on [gcoin] to [gcoin]create user 'salve'@'10.112.180.165' identified by '123456';GRANT REPLICATION SLAVE ON *.* TO 'salve'@'10.112.180.165';SHOW MASTER STATUS;查看master状态,记录二进制文件名和位置:+------------------+----------+--------------+------------------+-------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000016 |   714748 | gcoin        |                  |                   |
+------------------+----------+--------------+------------------+-------------------+CHANGE MASTER TO
MASTER_HOST='10.112.180.165',
MASTER_USER='salve',
MASTER_PASSWORD='123456',
MASTER_LOG_FILE='mysql-bin.000027',
MASTER_LOG_POS=687;start slaveshow slave status\G ;//查看从库状态show variables like '%binlog_format%';   日志模式FLUSH TABLES WITH READ LOCK;  阻塞所有写操作UNLOCK TABLES;  解锁./bin/mysqldump   --port 3306  --user root -p gcoin >./gcoin.sql   导出数据 -p 后跟的是库名,不是密码

转载于:https://www.cnblogs.com/xingminghui/p/8854488.html

mysql,jdbc、连接池相关推荐

  1. 架构周报| 浅析MySQL JDBC连接配置上的两个误区

    经典案例 \\ 浅析MySQL JDBC连接配置上的两个误区:相信使用MySQL的同学都配置过它的JDBC驱动,多数人会直接从哪里贴一段URL过来,然后稍作修改就上去了,对应的连接池配置也是一样的,很 ...

  2. jdbc封装mysql_用Java手动封装JDBC连接池(一)

    JDBC存在的问题 代码的冗余:在对数据库进行增删改查时,每个操作的JDBC流程和SQL执行代码的流程都一样,造成代码的冗余,所以我们可以把冗余的部分封装起来,封装之后,我们就不用再去写JDBC流程, ...

  3. HikariCP 高性能的 JDBC 连接池

    HikariCP 是一个高性能的 JDBC 连接池组件.下图是性能的比较测试结果: 使用方法: HikariConfig config = new HikariConfig(); config.set ...

  4. JDBC连接池和DBUtils

    本节内容: JDBC连接池 DBUtils 一.JDBC连接池 实际开发中"获得连接"或"释放资源"是非常消耗系统资源的两个过程,为了解决此类性能问题,通常情况 ...

  5. 数据层优化-jdbc连接池简述、druid简介

    终于回到既定轨道上了,这一篇讲讲数据库连接池的相关知识,线程池以后有机会再结合项目单独写篇文章(自己给自己挖坑,不知道什么时候能填上),从这一篇文章开始到本阶段结束的文章都会围绕数据库和dao层的优化 ...

  6. connection url mysql,JDBC 连接MySQL实例详解

    JDBC连接MySQL JDBC连接MySQL 加载及注册JDBC驱动程序 Class.forName("com.mysql.jdbc.Driver"); Class.forNam ...

  7. jdbc连接池工作原理_JDBC连接实际上如何工作?

    jdbc连接池工作原理 The JDBC Connection interface is a part of java.sql package. The java.sql.Connection int ...

  8. mysql odbc连接池_Java Mysql连接池配置和案例分析--超时异常和处理

    前言: 最近在开发服务的时候, 发现服务只要一段时间不用, 下次首次访问总是失败. 该问题影响虽不大, 但终究影响用户体验. 观察日志后发现, mysql连接因长时间空闲而被关闭, 使用时没有死链检测 ...

  9. JDBC、封装JDBC连接池、第三方连接池工具

    主要内容: JDBC简介 JDBC来源 通过代码实现JDBC JDBC的改进需求 JDBC改进的代码实现 JDBC使用的设计模式 封装连接池 封装JDBC连接池 ThreadLoacl的使用 Thre ...

  10. JDBC,JDBC连接池和JNDI

    最初级的用法,也可以说是菜鸟 显式地把 JDBC 驱动程序.数据库 URL 以及用户名和口令编码到程序中 Connection conn=null; String url = "jdbc:m ...

最新文章

  1. 项目中的技巧经验汇总
  2. WIN7 64位系统搭建WINCE6.0系统遇到的问题
  3. Leetcode题库 15.三数之和_1(双指针 C实现)
  4. boost学习之 时间和日期 timer
  5. 【简便代码+解析】1056 组合数的和 (15分)_14行代码AC
  6. python网络套接字_Python网络编程 Python套接字编程
  7. uva 10570——Meeting with Aliens
  8. Python学习 :面向对象 -- 成员修饰符
  9. conda install 换源_科学网—Anaconda 报错Multiple Errors Encountered和添加国内镜像以及换源和恢复默认源 - 张伟的博文...
  10. 前端每日实战 2018 年 9 月份项目汇总(共 26 个项目)
  11. 内镜手术机器人行业调研报告 - 市场现状分析与发展前景预测
  12. android PowerManager 权限问题
  13. Nmap列举远程机器开放的端口
  14. 嵌入式平台C语言实现二阶滤波器
  15. word打开老是配置进度_打开word文档显示配置进度怎么办 Word文档提示配置进度解决办法...
  16. 变种水仙花数 - Lily Number
  17. 使用karma+mocha+chai为vue组件库做单元测试
  18. signature=06503812625e47e9ee33634e47a778e8,Title page for ETD etd-07242013-155857
  19. Sql Server 2008 R2 清理内存的三种方法
  20. 阿里云-轻量应用服务器 jdk tomcat 的配置

热门文章

  1. 诺基亚7plus支持html,【诺基亚7Plus评测】外观:全面屏是最大亮点_诺基亚 7 Plus(4GB RAM/全网通)_手机评测-中关村在线...
  2. redis 端口_「建议收藏」手把手教你搭建redis集群
  3. ajax dorado,02. Dorado的AJAX异常
  4. antares harmony engine安装_PS CC2017安装教程
  5. java linux web_java在Linux下的web应用(一)
  6. linux 重定位arm,Arm linxu启动过程分析(一)
  7. 一文搞懂隐马尔可夫模型(HMM)
  8. Java实现redis管道
  9. Python风格总结:迭代器与生成器
  10. 【转】DLL中类的显式链接