1
keakon 2013-01-14 16:41:09 +08:00
把Session放在redis里试试,不过不能join了
|
2
Cadina 2013-01-14 16:49:29 +08:00
频繁更新的记录放在memcache里?
|
3
Cadina 2013-01-14 16:50:27 +08:00
说错了= =
更新->查询 |
4
iZr 2013-01-14 17:00:00 +08:00 via iPad
使用RDS
|
5
napoleonu 2013-01-14 17:00:38 +08:00
并不是平均每秒要写入1-2M的数据IO就有压力了吧,你确定你IO有压力了?
要优化IO也是让MySQL尽量Merge IO以减少随机IO和过多小IO,你数据要写那么多,往磁盘写多少数据是不可避免的,sync_binlog的设置对IO的影响比较大。 |
6
BOYPT 2013-01-14 17:47:45 +08:00
更新数据就是commit后mysql是一定要保证写进磁盘的吧,怎么可能利用内存呢,你要么把session从mysql移到其他组件
|
7
sdjl OP 我想通过优先让mysql利用内存缓存数据的方式解决, 这样可以不用修改程序。 mysql有内存表,但是session数据是要定时保存的, 内存表能定期保存在磁盘中么?
希望通过不增加程序复杂度的办法解决, 需要考虑的关键问题在于: 1 需要频繁更新, 所以想放到内存中, 但数据不超过100M 2 数据需要定时保存, 且重启程序后容易复原 3 尽量不改动python程序, 比如通过配置mysql实现,低耦合 |
9
bruce 2013-01-14 18:56:58 +08:00
这么频繁写入 1 则是设计问题, 2 则应该把频繁修改的分离出来而不放在 Session 表里
|
10
sdjl OP 刚才的 dstat 输出片段, 这不算高的时候, 高时send有3000k以上
You did not select any stats, using -cdngy by default. ----total-cpu-usage---- -dsk/total- -net/total- ---paging-- ---system-- usr sys idl wai hiq siq| read writ| recv send| in out | int csw 7 1 87 5 0 0| 47k 2755k| 0 0 | 10B 38B|2746 5030 13 2 84 0 0 1| 0 3876k| 100k 1865k| 0 0 |5610 7468 10 1 88 0 0 0| 256k 4908k| 93k 1897k| 0 0 |5593 6086 8 2 76 13 0 1| 260k 4932k| 83k 1868k| 0 0 |6057 6507 8 2 88 2 0 1| 256k 13M| 74k 1615k| 0 0 |5587 6479 9 2 88 0 0 1| 256k 1120k| 76k 1632k| 0 0 |4697 5905 8 2 89 0 0 1| 0 4556k| 81k 1652k| 0 0 |5122 6241 15 3 79 2 0 1| 260k 8632k| 91k 1847k| 0 0 |6334 9172 14 3 77 6 0 0| 260k 5416k| 95k 1777k| 0 0 |5738 7993 8 1 90 1 0 0| 256k 4584k| 89k 1824k| 0 0 |4726 4875 11 2 86 0 0 0| 256k 260k| 72k 1753k| 0 0 |4414 5313 11 2 86 0 0 0| 0 4548k| 86k 1772k| 0 0 |5817 7145 8 1 90 0 0 0| 256k 312k| 99k 1831k| 0 0 |4407 4639 5 1 94 0 0 1| 256k 336k| 100k 1958k| 0 0 |4081 3636 13 2 82 2 0 1| 256k 4924k| 99k 1923k| 0 0 |5056 6616 10 2 87 0 0 1| 0 5356k| 99k 1864k| 0 0 |5654 6865 |
11
napoleonu 2013-01-14 19:01:09 +08:00
@sdjl 如果这样你可以把这个表引擎改成memory引擎,自己写个crontab定时dump出来这个表的数据,并且这个表不记录binlog,设置如下
binlog-wild-ignore-table = your_table |
13
napoleonu 2013-01-14 19:09:51 +08:00
你数据要写那么多,往磁盘写多少数据是不可避免的。
你的问题是什么?怎么设置让数据写内存不写磁盘?数据库崩溃了你怎么办?服务器崩溃了你怎么办? |