Skip to main content

Posts

Showing posts from October, 2014

Java字符串处理的两个工具类

在处理SQL语句时发现的两个类: 一:StringTokenizer DOC: http://docs.oracle.com/javase/7/docs/api/java/util/StringTokenizer.html Console输出:2 但是如果 讲SQL语句改为:"id =2" 即把=后面的空格删掉话 则输出下一个'and'单词。 所以StringTokenizer是通过String.split("\\s")完成的分割。 二:BreakIterator DOC(cn): http://download.oracle.com/technetwork/java/javase/6/docs/zh/api/java/text/BreakIterator.html console: 可以看出BreakIterator是分割了每个字符,包括空格

数据库分表的意义与数据库中单表的大小控制

转载来自:http://www.woqutech.com/?p=807 请问:MySQL库中单表的大小尽可能控制在多大?采取这种表大小限制的策略的原因是什么?一个MySQL服务器实例中,表的数量有限制吗?单个MySQL服务器实例中,表的大小的总和有限制吗?如果有,考虑的原因是什么?单台PC SERVER上建多个MySQL服务器实例,一般的实例数是多少?是基于什么样的考虑原因? MySQL数据库分库后,我们的建议单表大小控制在10G以下。限制分拆以后的表的大小有几个好处: 1、表比较小的话,DDL操作更快。由于MySQL部分DDL操作需要锁表,所以表越小,锁表的时间就越短。 2、表越小,数据查询访问的速度越快。MySQL是B树结构,表越小,树的分层越少,IO也会比较少。 3、表越小,最终扩容到MySQL的实例数越多。将数据拆分得越散,数据分布越均匀,扩容的话,能够用更多的服务器来承担并发压力。 建议MySQL服务器的配置:2路6核cpu、192G内存,配有8块SSD或者PCIe Flash卡。这样一台服务器上一般是部署4-8个数据库实例, 这个要根据数据库硬件最大可承载的的CPU,IO(包括IO性能和IO容量),网络容量来评估。 比如双十一的时候,8个实例的flash卡MySQL数据库物理主机,就已经把网络的千兆网卡打满了。 所以需要进行充分的测试,检查在充分的压力下,数据库的能力会先遇到什么瓶颈。表的大小总和并没有限制,如果你是一个正常情况下访问量非常少的表,它的限制就可能在于单机MySQL磁盘或者flash卡的容量大小了。

Mysql varchar(255) 可以存放多少个汉字实验

这是一个有255个 “我”的字符串插入到 一个 设置为varchar(255)的实例代码 StringBuffer sb = new StringBuffer(); for(int i=0;i<256;i++){ sb.append("我"); } PreparedStatement pstmt = conn_2.prepareStatement("insert into test_varchar values(?)"); pstmt.setString(1, sb.toString()); pstmt.execute(); 实验结果:   MySQL 数据库编码格式为 utf-8的情况下,一个varchar(255)就最多可以接受255个汉字。当将字符串增加到256时,出现  com.mysql.jdbc.MysqlDataTruncation: Data truncation: Data too long for column 'name' at row 1