一、几条mysql命令

通过以下命令看一下mysql中 innodb_file_format的配置

  1. mysql> show engines;
  2. +--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
  3. | Engine | Support | Comment | Transactions | XA | Savepoints |
  4. +--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
  5. | MEMORY | YES | Hash based, stored in memory, useful for temporary tables | NO | NO | NO |
  6. | CSV | YES | CSV storage engine | NO | NO | NO |
  7. | MRG_MYISAM | YES | Collection of identical MyISAM tables | NO | NO | NO |
  8. | BLACKHOLE | YES | /dev/null storage engine (anything you write to it disappears) | NO | NO | NO |
  9. | MyISAM | YES | MyISAM storage engine | NO | NO | NO |
  10. | PERFORMANCE_SCHEMA | YES | Performance Schema | NO | NO | NO |
  11. | ARCHIVE | YES | Archive storage engine | NO | NO | NO |
  12. | InnoDB | DEFAULT | Supports transactions, row-level locking, and foreign keys | YES | YES | YES |
  13. | FEDERATED | NO | Federated MySQL storage engine | NULL | NULL | NULL |
  14. +--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
  15. 9 rows in set (0.00 sec)
  16.  
  17. mysql> select version();
  18. +------------+
  19. | version() |
  20. +------------+
  21. | 5.6.25-log |
  22. +------------+
  23. 1 row in set (0.00 sec)
  24.  
  25. mysql> select @@innodb_version;
  26. +------------------+
  27. | @@innodb_version |
  28. +------------------+
  29. | 5.6.25 |
  30. +------------------+
  31. 1 row in set (0.00 sec)
  32.  
  33. mysql> show variables like "%innodb_file%";
  34. +--------------------------+----------+
  35. | Variable_name | Value |
  36. +--------------------------+----------+
  37. | innodb_file_format | Antelope |
  38. | innodb_file_format_check | ON |
  39. | innodb_file_format_max | Antelope |
  40. | innodb_file_per_table | ON |
  41. +--------------------------+----------+
  42. 4 rows in set (0.00 sec)
  43.  
  44. mysql> SET GLOBAL innodb_file_format = barracuda;
  45. Query OK, 0 rows affected (0.00 sec)
  46.  
  47. mysql> show variables like "%innodb_file%";
  48. +--------------------------+-----------+
  49. | Variable_name | Value |
  50. +--------------------------+-----------+
  51. | innodb_file_format | Barracuda |
  52. | innodb_file_format_check | ON |
  53. | innodb_file_format_max | Antelope |
  54. | innodb_file_per_table | ON |
  55. +--------------------------+-----------+
  56. 4 rows in set (0.00 sec)
  57.  
  58. mysql> SET GLOBAL innodb_file_format_max = barracuda;
  59. Query OK, 0 rows affected (0.00 sec)
  60.  
  61. mysql> show variables like "%innodb_file%";
  62. +--------------------------+-----------+
  63. | Variable_name | Value |
  64. +--------------------------+-----------+
  65. | innodb_file_format | Barracuda |
  66. | innodb_file_format_check | ON |
  67. | innodb_file_format_max | Barracuda |
  68. | innodb_file_per_table | ON |
  69. +--------------------------+-----------+
  70. 4 rows in set (0.01 sec)
  71.  
  72. mysql> show engine innodb status\G
  73. *************************** 1. row ***************************
  74. Type: InnoDB
  75. Name:
  76. Status:
  77. =====================================
  78. 2015-12-29 01:31:16 a3731b70 INNODB MONITOR OUTPUT
  79. =====================================
  80. Per second averages calculated from the last 11 seconds
  81. -----------------
  82. BACKGROUND THREAD
  83. -----------------
  84. srv_master_thread loops: 2 srv_active, 0 srv_shutdown, 16015 srv_idle
  85. srv_master_thread log flush and writes: 16017
  86. ----------
  87. SEMAPHORES
  88. ----------
  89. OS WAIT ARRAY INFO: reservation count 5
  90. OS WAIT ARRAY INFO: signal count 5
  91. Mutex spin waits 0, rounds 0, OS waits 0
  92. RW-shared spins 5, rounds 150, OS waits 5
  93. RW-excl spins 0, rounds 0, OS waits 0
  94. Spin rounds per wait: 0.00 mutex, 30.00 RW-shared, 0.00 RW-excl
  95. ------------
  96. TRANSACTIONS
  97. ------------
  98. Trx id counter 125966
  99. Purge done for trx's n:o < 124524 undo n:o < 0 state: running but idle
  100. History list length 484
  101. LIST OF TRANSACTIONS FOR EACH SESSION:
  102. ---TRANSACTION 0, not started
  103. MySQL thread id 41, OS thread handle 0xa3731b70, query id 3846 localhost root init
  104. show engine innodb status
  105. --------
  106. FILE I/O
  107. --------
  108. I/O thread 0 state: waiting for i/o request (insert buffer thread)
  109. I/O thread 1 state: waiting for i/o request (log thread)
  110. I/O thread 2 state: waiting for i/o request (read thread)
  111. I/O thread 3 state: waiting for i/o request (read thread)
  112. I/O thread 4 state: waiting for i/o request (read thread)
  113. I/O thread 5 state: waiting for i/o request (read thread)
  114. I/O thread 6 state: waiting for i/o request (write thread)
  115. I/O thread 7 state: waiting for i/o request (write thread)
  116. I/O thread 8 state: waiting for i/o request (write thread)
  117. I/O thread 9 state: waiting for i/o request (write thread)
  118. Pending normal aio reads: 0 [0, 0, 0, 0] , aio writes: 0 [0, 0, 0, 0] ,
  119. ibuf aio reads: 0, log i/o's: 0, sync i/o's: 0
  120. Pending flushes (fsync) log: 0; buffer pool: 0
  121. 548 OS file reads, 43 OS file writes, 33 OS fsyncs
  122. 0.00 reads/s, 0 avg bytes/read, 0.00 writes/s, 0.00 fsyncs/s
  123. -------------------------------------
  124. INSERT BUFFER AND ADAPTIVE HASH INDEX
  125. -------------------------------------
  126. Ibuf: size 1, free list len 1256, seg size 1258, 0 merges
  127. merged operations:
  128. insert 0, delete mark 0, delete 0
  129. discarded operations:
  130. insert 0, delete mark 0, delete 0
  131. Hash table size 553193, node heap has 2 buffer(s)
  132. 0.00 hash searches/s, 0.00 non-hash searches/s
  133. ---
  134. LOG
  135. ---
  136. Log sequence number 1121969516
  137. Log flushed up to 1121969516
  138. Pages flushed up to 1121969516
  139. Last checkpoint at 1121969516
  140. 0 pending log writes, 0 pending chkp writes
  141. 18 log i/o's done, 0.00 log i/o's/second
  142. ----------------------
  143. BUFFER POOL AND MEMORY
  144. ----------------------
  145. Total memory allocated 136019968; in additional pool allocated 0
  146. Dictionary memory allocated 47602
  147. Buffer pool size 8191
  148. Free buffers 7823
  149. Database pages 366
  150. Old database pages 0
  151. Modified db pages 0
  152. Pending reads 0
  153. Pending writes: LRU 0, flush list 0, single page 0
  154. Pages made young 0, not young 0
  155. 0.00 youngs/s, 0.00 non-youngs/s
  156. Pages read 356, created 10, written 38
  157. 0.00 reads/s, 0.00 creates/s, 0.00 writes/s
  158. No buffer pool page gets since the last printout
  159. Pages read ahead 0.00/s, evicted without access 0.00/s, Random read ahead 0.00/s
  160. LRU len: 366, unzip_LRU len: 0
  161. I/O sum[0]:cur[0], unzip sum[0]:cur[0]
  162. --------------
  163. ROW OPERATIONS
  164. --------------
  165. 0 queries inside InnoDB, 0 queries in queue
  166. 0 read views open inside InnoDB
  167. Main thread process no. 2255, id 2837244784, state: sleeping
  168. Number of rows inserted 0, updated 0, deleted 0, read 0
  169. 0.00 inserts/s, 0.00 updates/s, 0.00 deletes/s, 0.00 reads/s
  170. ----------------------------
  171. END OF INNODB MONITOR OUTPUT
  172. ============================
  173.  
  174. 1 row in set (0.01 sec)

二、innodb_file_format

  • Antelope(羚羊)是Built-in-InnoDB(MySQL内置的InnoDB)支持文件格式的代号,有两种“数据表格式”(row_format):Redundant(冗余)、Compact(紧凑)

  • Barracuda(梭子鱼)是InnoDB Plugin支持的文件格式,在原来的基础上新增了两种数据表格式的支持:DynamicCompressed

  • innodb_file_format在配置文件中指定;row_format则在创建数据表时指定

同时Barracude也支持 old redundant and compact row formats

下面是来自stackexchange上面的回答 和 性能测试

1、Benefits of Barracuda and Compression

Question

I've been reading about MySQL's file formats Antelope and Barracuda a while ago, and I wonder if I could benefit with having Barracuda and Compression.

My server is currently using Antelope, as it is the default of MySQL.
I've had many times issues with memory due to the large database I have. My database is increasing every day.

It seems Compression is giving benefits to a few people, like:
http://www.mysqlperformanceblog.com/2008/04/23/real-life-use-case-for-barracuda-innodb-file-format/

I understand memory and disk space can be lower, but I'm not sure if I understand this (quoted from the article):
"~5% CPU load according to top (from 80-100% mostly waiting for I/O)
0.01 sec average lookup time by primary key (from 1-20 sec before the conversion)"

I thought these two things would NOT improve, because if the data is compressed, the server has to uncompress in order to get the original data again, so doesn't that make sense that CPU usage would increase?

Does that benefit you in read/write intensive applications? Would you recommend me to change to Barracuda and Compression?

Are you aware of any issues of Barracuda?
It seems the answer of the following question points a few issues, but since it's from 2011, I'd say they are fixed by now: http://serverfault.com/questions/258022/mysql-innodb-how-to-switch-to-barracuda-format

Answer

Regarding "Dynamic", the non-compressed Barracuda-only format, very little has changed from compact, mainly on how blobs (and any very dynamic fields) are stored. I have never had any issues with compact vs. dynamic, so I can safely recommend Barracuda's dynamic. Remember that Barracuda also supports old redundant and compact row formats.

The article you are mentioning is probably too old (5.1) and, as Peter Z., Percona's CEO, mentions on the comments it may be a bit misleading. That doesn't mean that compression can't be a huge gain depending on the workloads. However, I would recommend you to try it on versions >= 5.6, as both Facebook and Oracle have done lots of improvements about it.

As more recent reference materials, I would recommend you:

In particular, I like Facebook materials as they are third party (no need for an agenda) and they have one of the largest MySQL deployments in the world. As you can see they have had very successful setups combining SSD technology with compression.

Will it benefit you? That will depend on your workload, working set and setup (IOPS, memory). Depending if you are IO bound, CPU bound or memory bound, compression can affect negatively in some cases, by adding extra CPU, memory requirements (both compressed and uncompressed pages are stored on the InnoDB buffer pool) or generating too many compression failures, augmenting the latency. It also depends on the type of data: compression can help a lot with large text blobs, but it may be useless with already-compressed data.

In my experience, in practice, there are people for which compression was a the holy grail of performance and are very happy with it, but on other cases, we had to revert to uncompressed data as no gain was obtained. While a very heavy writing workload may seem like a bad environment for compression, if in your particular case you are not cpu-bound and memory-bound, but iops-bound it may be none-less helpful.

In a nutshell, it is very difficult to predict results, usually you should setup a test environment for benchmarking and then discover why you get better or worse results (and that way you can play with different block sizes, etc.). Barracuda is completely safeCompression may or not be for you. And you can always experiment with other compression methods like client-side compression of blobs (for example, if you end up CPU-bound) or other 3rd party engines like TokuDB, in which compression is a big priority, as it is focused in performance for larger datasets than InnoDB can handle.

2、Benchmarking InnoDB page compression performance

配置文件

  1. innodb_file_format=barracuda
  2. innodb_file_per_table = 1
  3. innodb_strict_mode=1 #建议加上

创建数据表

  1. CREATE TABLE name (column1 INT PRIMARY KEY) ENGINE=InnoDB
  2. ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=4;

Compact和redumdant的区别在就是在于首部的存存内容区别。

compact的存储格式为首部为一个非NULL的变长字段长度列表

redundant的存储格式为首部是一个字段长度偏移列表(每个字段占用的字节长度及其相应的位移)。

在Antelope中对于变长字段,低于768字节的,不会进行overflow page存储,某些情况下会减少结果集IO.

Sql代码

  1. mysql> create table compressed1 ( acol int ) ENGINE=INNODB;
  2. Query OK, 0 rows affected (0.22 sec)
  3.  
  4. mysql> show create table compressed1\G
  5. *************************** 1. row ***************************
  6. Table: compressed1
  7. Create Table: CREATE TABLE `compressed1` (
  8. `acol` int(11) DEFAULT NULL
  9. ) ENGINE=InnoDB DEFAULT CHARSET=utf8
  10. 1 row in set (0.05 sec)
  11.  
  12. mysql> create table compressed2 ( acol int ) ENGINE=INNODB ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=4;
  13. Query OK, 0 rows affected, 4 warnings (0.12 sec)
  14.  
  15. mysql> show warnings;
  16. +---------+------+-----------------------------------------------------------------------+
  17. | Level | Code | Message |
  18. +---------+------+-----------------------------------------------------------------------+
  19. | Warning | 1478 | InnoDB: KEY_BLOCK_SIZE requires innodb_file_format > Antelope. |
  20. | Warning | 1478 | InnoDB: ignoring KEY_BLOCK_SIZE=4. |
  21. | Warning | 1478 | InnoDB: ROW_FORMAT=COMPRESSED requires innodb_file_format > Antelope. |
  22. | Warning | 1478 | InnoDB: assuming ROW_FORMAT=COMPACT. |
  23. +---------+------+-----------------------------------------------------------------------+
  24. 4 rows in set (0.00 sec)
  25.  
  26. mysql> show create table compressed2\G
  27. *************************** 1. row ***************************
  28. Table: compressed2
  29. Create Table: CREATE TABLE `compressed2` (
  30. `acol` int(11) DEFAULT NULL
  31. ) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=4
  32. 1 row in set (0.00 sec)
  33.  
  34. mysql> show variables like "%innodb_file%";
  35. +--------------------------+----------+
  36. | Variable_name | Value |
  37. +--------------------------+----------+
  38. | innodb_file_format | Antelope |
  39. | innodb_file_format_check | ON |
  40. | innodb_file_format_max | Antelope |
  41. | innodb_file_per_table | ON |
  42. +--------------------------+----------+
  43.  
  44. //change
  45.  
  46. mysql> show variables like "%innodb_file%";
  47. +--------------------------+-----------+
  48. | Variable_name | Value |
  49. +--------------------------+-----------+
  50. | innodb_file_format | Barracuda |
  51. | innodb_file_format_check | ON |
  52. | innodb_file_format_max | Barracuda |
  53. | innodb_file_per_table | ON |
  54. +--------------------------+-----------+
  55. 4 rows in set (0.00 sec)
  56.  
  57. mysql> create table compressed3 ( acol int ) ENGINE=INNODB ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=4;
  58. Query OK, 0 rows affected (0.32 sec)
  59.  
  60. mysql> show create table compressed3 \G
  61. *************************** 1. row ***************************
  62. Table: compressed3
  63. Create Table: CREATE TABLE `compressed3` (
  64. `acol` int(11) DEFAULT NULL
  65. ) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=4
  66. 1 row in set (0.00 sec)
  67.  
  68. //数据文件
  69.  
  70. -rw-rw---- 1 mysql mysql 8.4K 12 29 01:18 compressed1.frm
  71. -rw-rw---- 1 mysql mysql 96K 12 29 01:18 compressed1.ibd
  72. -rw-rw---- 1 mysql mysql 8.4K 12 29 01:19 compressed2.frm
  73. -rw-rw---- 1 mysql mysql 96K 12 29 01:19 compressed2.ibd
  74. -rw-rw---- 1 mysql mysql 8.4K 12 29 03:03 compressed3.frm
  75. -rw-rw---- 1 mysql mysql 64K 12 29 03:03 compressed3.ibd
  76.  
  77. //compressed3.ibd 是被压缩过的

使用脚本查看文件信息

  1. [root@localhost innodb]# python py_innodb_page_info.py -v /data/mysql/testdb/compressed3.ibd
  2. page offset 00000000, page type <File Space Header>
  3. page offset 00000000, page type <Freshly Allocated Page>
  4. page offset 00000000, page type <Freshly Allocated Page>
  5. page offset 00000000, page type <Freshly Allocated Page>
  6. Total number of page: 4:
  7. Freshly Allocated Page: 3
  8. File Space Header: 1
  9. [root@localhost innodb]# python py_innodb_page_info.py -v /data/mysql/testdb/compressed2.ibd
  10. page offset 00000000, page type <File Space Header>
  11. page offset 00000001, page type <Insert Buffer Bitmap>
  12. page offset 00000002, page type <File Segment inode>
  13. page offset 00000003, page type <B-tree Node>, page level <0000>
  14. page offset 00000000, page type <Freshly Allocated Page>
  15. page offset 00000000, page type <Freshly Allocated Page>
  16. Total number of page: 6:
  17. Freshly Allocated Page: 2
  18. Insert Buffer Bitmap: 1
  19. File Space Header: 1
  20. B-tree Node: 1
  21. File Segment inode: 1
  22. [root@localhost innodb]# python py_innodb_page_info.py -v /data/mysql/testdb/compressed1.ibd
  23. page offset 00000000, page type <File Space Header>
  24. page offset 00000001, page type <Insert Buffer Bitmap>
  25. page offset 00000002, page type <File Segment inode>
  26. page offset 00000003, page type <B-tree Node>, page level <0000>
  27. page offset 00000000, page type <Freshly Allocated Page>
  28. page offset 00000000, page type <Freshly Allocated Page>
  29. Total number of page: 6:
  30. Freshly Allocated Page: 2
  31. Insert Buffer Bitmap: 1
  32. File Space Header: 1
  33. B-tree Node: 1
  34. File Segment inode: 1
  35.  
  36. [root@localhost innodb]# od -t x1 -j 54 -N 4 /data/mysql/testdb/compressed1.ibd
  37. 0000066 00 00 00 00
  38. 0000072
  39. [root@localhost innodb]# od -t x1 -j 54 -N 4 /data/mysql/testdb/compressed2.ibd
  40. 0000066 00 00 00 00
  41. 0000072
  42. [root@localhost innodb]# od -t x1 -j 54 -N 4 /data/mysql/testdb/compressed3.ibd
  43. 0000066 00 00 00 27
  44. 0000072

三、文件格式兼容性检查

InnoDB Plugin引入的新的文件格式,也引入较为完整的文件兼容性检查,以防止误操作非兼容的文件格式。兼容性检查一共有三类:启动数据库时、创建数据表时、访问数据表时。

  • 当数据库启动时候,参数innodb_file_format_check(>=5.1.38)会要求InnoDB在启动时检查当前数据表的格式。设置为ON时,如果检测到不支持的格式,那么InnoDB会启动失败;设置为OFF时,检测到不支持的仅会给出警告,并不会导致启动失败。

  • 当创建数据表时,InnoDB会依据参数InnoDB_file_format进行检查,如果创建的数据表格式高于InnoDB_file_format,则创建会失败。

  • 当访问某个数据表(table-access)时,InnoDB也会进行兼容性检查。只要当前运行的InnoDB版本能够支持的格式,都能够被访问,无论参数InnoDB_file_format的配置。

把innodb_file_format_check设置为OFF是很危险的。在InnoDB启动后,一般需要做一些恢复工作,例如Double write buffer/Insert buffer中的数据处理(这依赖于innodb_fast_shutdown参数),试想如果成功启动,但是某些表是不支持的格式,但是InnoDB仍然安装旧版本做恢复,这可能会毁掉相关数据。

所以,一般建议innodb_file_format_check设置为ON。如果是OFF,关闭InnoDB的innodb_fast_shutdown参数务必设置成0

参考文章

http://www.freehao123.com/vps-cpu-io-unixbench/
http://www.orczhou.com/index.php/2010/03/innodb-plugin-file-format/
http://www.orczhou.com/index.php/2014/03/some-tricky-about-mysqladmin-extended-status/
http://www.orczhou.com/index.php/2010/12/more-about-mysql-innodb-shutdown/
http://dba.stackexchange.com/questions/14246/innodb-file-format-barracuda
http://www.tuicool.com/articles/3qm2U3J
http://www.tuicool.com/articles/qQfAJfI
http://www.xuliangwei.com/xubusi/category/%E8%87%AA%E5%8A%A8%E5%8C%96%E8%BF%90%E7%BB%B4
http://www.xuliangwei.com/xubusi/203.html  
http://www.xuliangwei.com/xubusi/175.html
http://www.cnblogs.com/billyxp/p/3342969.html?utm_source=tuicool&utm_medium=referral
http://zjadolf.blog.163.com/blog/static/775779202014111063258737/
http://imysql.cn/taxonomy/term/21
http://imysql.com/2015/07/30/mysql-faq-howto-calculate-open-files.shtml
http://imysql.com/2014/09/28/mysql-optimization-case-blob-stored-in-innodb-optimization.shtml

【mysql】关于innodb_file_format的更多相关文章

  1. MySQL Innodb Engine -- 文件格式(innodb_file_format)

    ======================================================== 在InnoDB 1.0.x版本之前,InnoDB 存储引擎提供了 Compact 和 ...

  2. [原] KVM 环境下MySQL性能对比

    KVM 环境下MySQL性能对比 标签(空格分隔): Cloud2.0 [TOC] 测试目的 对比MySQL在物理机和KVM环境下性能情况 压测标准 压测遵循单一变量原则,所有的对比都是只改变一个变量 ...

  3. 如何利用脚本实现MySQL的快速部署以及一机多实例的部署

    MySQL有三个版本:二进制,源码包,RPM. 下面讲讲二进制包的安装过程 下载地址: http://dev.mysql.com/downloads/mysql/ 选择Linux-Generic 我这 ...

  4. [MySQL Reference Manual]14 InnoDB存储引擎

    14 InnoDB存储引擎 14 InnoDB存储引擎 14.1 InnoDB说明 14.1.1 InnoDB作为默认存储引擎 14.1.1.1 存储引擎的趋势 14.1.1.2 InnoDB变成默认 ...

  5. MySQL 5.7 学习:功能性能的提升

    背景: 继上次介绍 初识 MySQL 5.6 新功能.参数完之后,刚好MySQL 5.7又GA了,在官方测试里看到,MySQL5.7在功能.性能.可用性.安全和监控上又提升了很高.现在看看和MySQL ...

  6. mysql 启动不了了

    在做测试的工程中,发现mysql启动失败,报错信息如下: --03T08::.969163Z mysqld_safe mysqld from pid file /var/data/my3306/run ...

  7. MySQL 5.6 & 5.7最优配置模板

    摘自:http://mp.weixin.qq.com/s?__biz=MjM5MjIxNDA4NA==&mid=207854835&idx=1&sn=c998031ae6816 ...

  8. MySQL 升级详细步骤 (包括 Percona)

    MySQL 升级步骤 MySQL 5.1.72 升级到 MySQL 5.5.36 鉴于我在升级的时候遇到的麻烦问题,我觉得有必要把一些细节说清楚,免得引起误解了.感觉官方文档上的升级步骤写的比较简单, ...

  9. 京东MySQL监控之Zabbix优化、自动化

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://wangwei007.blog.51cto.com/68019/1833332 随 ...

随机推荐

  1. [Solution] Microsoft Windows 服务(2) 使用Topshelf创建Windows服务

    除了通过.net提供的windows服务模板外,Topshelf是创建Windows服务的另一种方法. 官网教程:http://docs.topshelf-project.com/en/latest/ ...

  2. 软件工程——sprint 1回顾总结

    主题:“我们在本次sprint中做了什么?接下来的打算?” sprint总结:在本次sprint里,这是我们团队的成员们第一次开始以团队的形式进行一次团队项目开发,早在第一次团队会议之时,我们便因团队 ...

  3. Logger.getLogger和LogFactory.getLog的区别

    Logger来自log4j自己的包.如果用Logger.getLogger,需要一个log4j的jar包,用此方式你只能依靠log4j: LogFactory来自common-logging包.如果用 ...

  4. ADO.NET 增 删 改 查

    ADO.NET:(数据访问技术)就是将C#和MSSQL连接起来的一个纽带 可以通过ADO.NET将内存中的临时数据写入到数据库中 也可以将数据库中的数据提取到内存中供程序调用 ADO.NET所有数据访 ...

  5. Azure开发者任务之六:使用WCF Service Web Role

    在本文中,我们将会在local development fabric上创建一个WCF服务角色,然后在一个控制台应用程序中使用它. WCF服务角色可以让我们创建一个WCF服务,并且把它托管在Window ...

  6. WPF后台设置xaml控件的样式System.Windows.Style

    WPF后台设置xaml控件的样式System.Windows.Style 摘-自 :感谢 作者: IT小兵   http://3w.suchso.com/projecteac-tual/wpf-zhi ...

  7. sphinx使用小记之使用小结

    sphinx使用小记之使用小结 摘自:http://www.68idc.cn/help/jiabenmake/qita/20150124187789.html 在使用sphinx的过程中有出现一些问题 ...

  8. 微软Asp.net MVC5生命周期流程图

           .NET WEB Development blog 发布了Asp.net MVC5生命周期文档, 这个文档类似Asp.net应用程序生命周期,您以前开发ASP.NET WEB应用程序应该 ...

  9. [Architecture Pattern] Singleton Locator

    [Architecture Pattern] Singleton Locator 目的 组件自己提供Service Locator模式,用来降低组件的耦合度. 情景 在开发系统时,底层的Infrast ...

  10. 移动端调试工具-Debuggap

    随着移动互联网的迅速崛起,开发移动应用程序越来越多,但如果在移动端开发应用程序需要调试时,额- 仿佛又回到了IE时代,最方便也只能到处 alert 来调试.目前已经有一款产品可以做到这一点,比如pho ...